用十位小数点模拟的统一随机数

本文关键字:模拟 随机数 小数点 十位 | 更新日期: 2023-09-27 18:13:07

我试图运行一个特定的模拟,我有一些代码实现,但结果不是我所期望的,我需要生成随机统一(范围从0到1)的数字与10小数点(为了在其他分布转换)。示例:0,0345637897,0,3445627876,0,9776428487

这是代码:

double next = r.Next(1000000000, 9999999999);
return double.Parse(String.Format("0.{0}", next));

用十位小数点模拟的统一随机数

这应该足够了:

double v = Math.Round(myRandom.NextDouble(), 10);

0.1230.1230000000之间的区别是格式问题,参见@SamIAm的答案。


编辑后:

double next = r.Next(1000000000, 9999999999);
return double.Parse(String.Format("0.{0}", next));

这是获得一个整数在1000000000和9999999999之间,然后使用默认区域性将其转换为双精度(在0…

1.0)。

既然您似乎使用逗号(,)作为小数分隔符,至少使用

return double.Parse(String.Format("0.{0}", next), CultureInfo.Invariant);

您想要填充您的输出吗?因为你可以用String.Format()

string s = String.Format({0:0000000000}, i);

也可以是双精度或浮点数

string s = String.Format("{0:0.0000000000}", d);

如果你需要一个随机的双精度值,只需创建一个,并在打印时填充10位小数。

Random random = new Random();
double d = random.NextDouble()

建议使用RNGCryptoServiceProvider。它将产生高质量的随机数

参见这篇文章:为什么使用c#类系统。完全是随机的,而不是System.Security.Cryptography.RandomNumberGenerator?