【发布时间】:2010-11-05 17:01:31
【问题描述】:
我正在寻找一种有效的方法来生成人类会认为是随机的数字。基本上,我认为这是避免 0 或 1 位的长序列。我希望人类能够查看位模式,并且功耗非常低的 CPU 应该能够每秒计算近千个。
我可以想到两种不同的概念来做到这一点,但我找不到一种有效的方法来实现它们。
生成一个固定位数为 1 的随机数。对于 32 位随机数,这需要多达 31 个随机数,使用 Knuth 选择算法。有没有更有效的方法来生成一个设置了一些位数的随机数?不幸的是,0000FFFF 看起来不是很随机。
某种形式的“部分”密度看起来会更好 - 但我想不出一个明确的方法 - 我想通过每个块,并计算如何距离理想密度还差得很远,试着增加下一个块的位密度。这听起来很复杂。
希望有另一种我没有考虑过的算法。在此先感谢您的帮助。
[编辑]
我应该更清楚我的要求 -
(a) 有没有一种有效的方法来生成随机数,而不需要“长时间”运行单个位,其中“long”是一个可调参数?
(b) 关于什么会使数字看起来不那么随机的其他建议?
【问题讨论】:
-
我想知道如果你用二进制显示,人们是否真的会认为典型的随机数生成器产生的结果是“非随机的”。
-
我希望您知道排除“长期运行”会显着降低随机性。
-
显然,他不是在寻找随机数。他试图让数字“看起来”比随机更随机。
-
它可以是一组“批准的数字”(我在回答中提出的)中的真正随机样本。
标签: algorithm language-agnostic random