【发布时间】:2017-11-19 17:04:34
【问题描述】:
Best way to generate a random float in C# 表示浮点数,Generating a Random Decimal in C# 表示十进制数,但是,没有问题的 double 还涵盖了“double 的全部范围”。
如何正确生成在所有有效(即非 NaN/无限/...)值上均匀分布的随机双精度值?
【问题讨论】:
-
均匀分布是什么意思?您希望每个双精度数均等,还是希望数学上均匀分布(即,在区间
[x, y]中获得数字的机会与(y-x)成正比)? -
不清楚你在问什么。调用
random.NextDouble()然后将其缩放到[double.MinValue, double.MaxValue]范围内如何不能满足您的需求?为什么不直接应用你找到的float的答案,而是使用double类型呢?你尝试过任何东西吗? -
ad float) 我不确定如何应用 double 的答案,因为没有人描述常量的来源 (*2.0, -1.0, -126, +128)
-
广告缩放)怎么做?如果 r.nextDouble() 非常高,旧的
rangeMin + (rangeMax - rangeMin) * r.nextDouble()将无法工作,因为它会发生溢出。 -
广告分布)我希望它具有与 nextDouble() 相同的分布。