【发布时间】:2017-07-22 10:50:13
【问题描述】:
我们想从区间 [0, 1] 中生成一个统一的随机数。
让我们首先生成 k 个随机布尔值(例如,通过 rand()
假设我们有任意精度。
这样生成的随机数会比通常的 rand() 更“随机”吗?
PS。我猜子间隔选择相当于只选择输出 0 的二进制表示。b_1 b_2 b_3... 一次一位数字 b_i,最后一步是将 rand() 的表示添加到输出的末尾。
【问题讨论】:
-
“通常的”
rand()是相当随机的。你想解决什么问题? -
这更像是一个理论问题。但在某些情况下,我们可能需要“更随机”的随机数。例如在洗牌中,52!很大,有人可以利用 rand() 的属性来发挥自己的优势(只能生成一小部分可能的 shuffle)。
-
组合随机源的常用方法是使用异或,在这种情况下,无论您使用什么异或,输出的随机性都不会低于最随机的输入,并且可能更随机。