【发布时间】:2014-02-07 15:04:51
【问题描述】:
我需要一个用于 c 或 c++ 的无偏均匀随机数生成器(双精度),在 闭合 区间上,例如 [0,1]。
许多随机数生成器,例如 GSL gsl_rng_uniform(r),只能在开放区间内工作,如 [0,1),但这不适合我的情况。
阿尔。
【问题讨论】:
-
整数还是浮点数?
-
定义“好”均匀随机数生成器...除了“闭区间”,您还需要哪些其他属性?你打算如何使用它?
-
还有为什么 C 和 C++ 可以选择一个,它们不一样,答案也不一样。
-
在 [0,1] 中得到任何实数的概率为零。因此,在 [0,1] 或 [0,1) 中取实数在数学上是接近的。唯一的区别是“1”的情况,但它的发生概率无论如何都是空的。
-
为了扩展 @ndj 所说的内容,恰好在间隔结束时获得随机
double的机会介于 2^54 中的 1 和 2^64 中的 1 之间。生成足够多的随机数来注意开区间和闭区间之间的差异是不切实际的。