人脑的随机数生成算法?[关闭]


37

您是否知道或已设计出任何实用的,易于学习的“头脑中”算法,从而使人们可以生成(有点“真实”)随机数?“头上”是指..优选地没有任何外部工具或设备。同样,期望高输出(每分钟许多随机数)。

在SO上询问此问题,但并没有引起太大兴趣。也许这更适合程序员。


7
@ S.Lott我一点都不觉得荒谬。不切实际?当然可以。荒诞?当然不是。即使是这样,荒谬也可以为新的有用思想铺平道路。
biziclop 2011年

21
9 .... 9 .... 9 .... 9-您无法证明它不是随机的。

13
S.Lott:轻松计算伪随机数生成器的想法一点都不荒谬。我认为OP希望在这里避免人为偏见
。...– Jens

8
我觉得很有趣(同时又有些沮丧),多少人似乎欣赏无知的论点。“我无法想象它,因此它不存在”,或者答案完全失去了重点。
biziclop 2011年

4
这个问题似乎离题,因为它与个人的认知能力有关,而不与编程有关。

Answers:


36

这是George Marsaglia的算法:

选择一个2位数的数字,例如23,即您的“种子”。

形成一个新的2位数:10位数加6倍的单位位数。

示例序列为23-> 20-> 02-> 12-> 13-> 19-> 55-> 35-> ...

它的周期是乘数6的阶数,在与模数10相对质数的残基组中(在这种情况下为59)。

“随机数”是2位数字的单位数字,即3,0,2,2,3,9,5,...序列模数10。该算法很简单,可以在您的计算机中执行头。


听起来真的很好。
biziclop 2011年

4
对于特定人的需求,这可能不是问题,但这只能为您提供90种不同的信息流。
compman 2011年

5
79,79,79,79,79,79,79,79,79,79,哦,不!我假设您应该保持<= 60,这很好,因为如果您没有时钟,可以使用时钟作为种子。
EDS

4
@eds Um,什么?79-> 61-> 15-> ...
伊兹卡塔2014年

1
也许@eds表示59。从1到58的所有数字似乎都是公平的游戏。
Erhannis

26

查看有关风水学的这篇文章。特别是有关生成风水图表的部分。它涉及使用二进制数字的伪随机数生成技术和一些简单的递归计算。看来您可以相当轻松地做到这一点(尽管一张纸会有所帮助)。

免责声明:我自己还没有尝试过;当我需要一个足够随机的数字时,我可以从中得到一些输出/dev/random,可以使用方便rand的任何语言使用,也可以掷出我信任的d20。

如果您是一个数学天才,那么使用Middle-square方法是一种相当轻便的计算方法,即使这种方法明显不可靠。


3
+1我认为这是对此问题的第一个严肃的答案。有点难过。
詹斯

@Magnus Wolffelt-我记得Ron Eglash在TED演讲中提到了非洲分形几何的文化意义;“巴马纳沙占卜”。这很有趣,尽管我仍然不知道您现在将不再使用占卜者了,您将使用这种技术。ted.com/talks/ron_eglash_on_african_fractals.html
Inaimathi

1
据我所知,风水学方法只是允许您“改善”(我认为“去偏斜”是一个更好的术语)随机性的来源。不要嘲笑,但不是OP一直在寻找什么。这并不是说这是不是漂亮....
诺曼灰色

@诺曼·格雷(Norman Gray)-默认情况下,人的大脑可以得出有偏的任意数字。
Inaimathi 2011年

@Inaimathi准确地说:这就是为什么对数字进行去偏对很重要,并且为什么您指向的方法会有所帮助。否则我误会你了。
诺曼·格雷

10

我认为一个合理的假设是,您必须依赖大脑中存储的大量口头信息。来源可以是任何东西,例如歌曲歌词,诗歌,Monty Python草图,但必须是您心中一定知道的东西。

然后,您必须选择一个相当随机的部分,以尽可能消除无意识的偏见。例如,一种方法是选择一首歌曲,选择k10到20之间的数字,然后k在其歌词中找到第一个字母。

显然,由于字母的频率不同,这本身并不会给您带来均匀的分布,但是尽管如此,它还是一个随机字母,或者至少与我所相信的接近,除非我相信没有外部来源。

更新:顺便说一句,当人们被要求写一个随机的说掷硬币的序列时,到目前为止,最常见的错误是使您的序列“太随机”:结果相同的运行将太短,运行时间很简单分析将揭示。该方法主要旨在避免这种陷阱。当然,此行程偏差的阴影可能会引起其他异常,但是您需要进行适当的实验才能找到它们。具有讽刺意味的是,仅靠思考无法找到一种通过仅靠思考产生随机数的算法。


即使那样,我也希望您会在许多微妙的方面产生偏见。(IE倾向于选择同一组歌曲)
Zachary K

@Zachary K毫无疑问,但是您还必须选择一个数字,该数字会有所分散。尽管永远无法消除偏见,但是这种方法几乎可以肯定使您无法知道该选择哪一个字母(尽管随着时间的流逝,您一定会记住一些字母)。
biziclop 2011年

Eini迷你薄荷萌,就像我们小时候一样。
Zachary K

2
“选择介于10到20之间的数字k”。17.最小随机数。
S.Lott

@ S.Lott此数字的随机性无关紧要。您需要它的唯一原因是,您倾向于更轻松地记住事物的前几个字母。
biziclop 2011年

9

品尝您的手表。

如果我需要一个60(秒)的随机数,则可以这样做。无论何时,都要取适当的模。下午4:17:23(模拟模辊)变为5。


每分钟有大量?
加里·罗

不确定我是否遵循。您是说通过增加分钟数来使人数池达到3600?我想,但是数字越大,随机性越小?就像您无法轻松轻松地快速采样一样。
Mark Canlas

1
@Gary Rowe恐怕必须取消此标准,这仅仅是因为无论使用哪种方法,人脑都太慢了。
biziclop 2011年

抱歉,我只是想知道如果每分钟需要60个以上的号码,您的方法将如何工作。事后看来,要求人脑每分钟产生那么多的数字无论如何都会使它最大化,因此不必担心。
加里·罗

@biziclop没问题。考虑@Mark的方法时,我似乎遇到了评论冲突。
加里·罗

5

很好的问题。我担心一个好的答案可能会非常困难。

但是首先,当涉及到两个人时,很容易产生“真实的”随机性:只需让其中一个人默默地计算其头部模数,然后另一个人在任意间隔后说“停止”。之后,可以使用标准方法将此数字转换为其他分布。

为了使该方法更可靠,模数不能太大,否则会对小数产生强烈的偏见。我真的很想看看是否有任何工作可以分析这种方法的随机特性。


我认为,计数必须快速完成,这一点很重要–计数人员应该注意不要以有节奏的方式计数,每秒仅大约1或2步。因为应该有大量的循环(直观上≥4)才能获得足够的熵。
亚伦·托马

更好的随机性的改进建议:计数者首先选择0到模数之间的秘密随机种子X₀;与计数结合使用时,应该以最小的思维努力(即使是相对于计数持续时间缓慢计数时,也可以提供不错的随机性;即,循环次数少–直观上≥2是可以的; <2可以)。
亚伦·托马

4

这是一个复杂的问题。我将尽力解释一下,而又不要在杂草中走得太远。

首先,我们必须问“什么是真正的随机性”?这样的讨论很快就演变成哲学领域,但是要旨是:“宇宙真的是随机的吗?”?换句话说,如果您量化时间和物质,是否可以从当前状态计算下一个宇宙状态?如果是的话,那么宇宙就是确定性的,就没有真正的随机性(见我对“哲学”的意思是什么?)

因为很难定义“真正的随机性”,所以我们经常满足于“伪随机性”。当然,在计算机上生成“随机”数字时通常需要这样做。

最简单的伪随机数生成器类似于Dilbert著名的“ 9..9 ....”算法。但是从直觉上看,这似乎不太好(当然是个笑话)。统计学家已经开发出了许多测试方法,用以说明一系列所谓的随机输出是否“良好”。从“卡方检验”的维基百科页面开始,您可以花一个下午的时间阅读有关这些检验的信息。

一个简单的计算机算法(例如“线性同余生成器”)会产生足以用于卡方检验的数字(但是,您仍然需要从某种东西中“播种”该算法)。

“良善”的下一个步骤是“密码学上强的随机性”,这意味着给定序列a1,a2,...,除非您使用大量计算,否则您无法以“合理的概率”预测序列中的下一个数字。这些数字有时称为“计算伪随机”。获得这样一个序列的一种常见方法是通过这样的“哈希链”:a1 = SHA512(a2),a2 = SHA512(a3),...由于我们(根据经验,而不是数学证明)认为SHA512是在计算上难以逆转,我们认为a2仅在给定a1的情况下“不可能”进行预测。

因此,现在出现了问题,根据您的问题所规定的规则,人类可以做的最好的事情是什么?众所周知,人类不擅长产生随机性。曾经有一个网站,您会试图通过“随机”键入H,T,T,H,H,T,T等来生成硬币翻转,就好像您在翻转硬币一样(但是您在你的脑袋)。一段时间后,该网站将开始预测您的翻转超过50%的时间(使用隐马尔可夫模型)。我们对此很不好。

有多种方法可以使用各种可能在您脑海中可行的混合技术来改善这种情况。甚至还有我可能梦applications以求的应用程序,为什么您会想要这样做(政治犯想要加密发送给外部盟友的消息)。但是我认为这篇文章足够长。:)


1
尽管是否存在真正的随机物理过程尚有待商al(尽管涉及EPR悖论的实验提出了肯定的答案),但基于Kolmogorov复杂度,确实存在对随机序列的理论定义。
biziclop 2011年

3

基于工具的RNG激增的主要原因是尚未开发出一种好的生成随机数的内置算法

幸运的是,便携式随机数生成器(包括用于翻牌的硬币,用于掷骰的骰子(具有多个小面的数字),用于拾取的卡片和用于绘制的吸管)相对容易以低成本获得。而且,对于我们中间的技术爱好者来说,对于大多数移动平台可用的这些工具有一些相当不错的模拟。

我衷心推荐以上任何一种肉制品替代品。


1
这些物理设备确实确实具有不可预测的性质,因此从某种意义上说,它们比最佳计算机算法更随机。
欧米茄半人马座

@OmegaCentauri:当然,我看你做了什么,还有,哦!)(不知道这个双关语意,但我喜欢它:))
阿隆托马

3

高度随机化,每分钟大量且由人产生?不会发生

您将要遇到的主要问题是

  • 人们很快就会感到无聊,所以模式会很快发生
  • 人脑有很多结构专门用于模式识别/创建,因此您将不得不克服这种结构
  • 真正的随机数包含人类试图避免的重复
  • 大量的人类是不好的

这导致许多密码学家放弃“头戴式”技术,而转向随机的外部过程,因为根据“头戴式”数字确定模式太简单了。

离题但有趣

虽然这不是一种在您的脑海中生成随机数的机制,但是Solitaire算法(如Neal Stephenson的Cryptonomicon所描绘的)证明了将随机数用于加密目的有多么困难。它只需要一包普通扑克牌就可以创建一个相当安全的输出,但是这种方法非常复杂。


1
我认为这不能回答问题。仅当人们尝试在没有算法的情况下找到随机数时,答案的4点才适用。我认为OP意识到了这一点,这就是为什么他要求人们在脑海中可以做的并给出良好结果的算法,即不要遭受答案中提到的问题。
FabianB

2

我真的很好奇人们可能会就此问题提出的任何建议。

请离开办公桌,然后前往拉斯维加斯。

人类有数十种随机程序。您可以在拉斯维加斯看到所有这些。

您有旋转的圈子。你有翻滚的立方体。而且您已经洗牌了。他们都表现出色。

多维数据集也许是最古老的。显然在某一时刻使用了细长的四面棍。几千年来,对称的绵羊羊角叉骨流行。自从大约在开发语言的同时,我们就一直在使用这类随机器。

http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8

“任何考虑产生随机数的算术方法的人,当然都处于犯罪状态”

-约翰·冯·诺伊曼


7
不推荐使用-我对生成随机数的外部工具不感兴趣,但是对可以依靠内存或刺激来生成真正随机数的内置算法不感兴趣。
Magnus Wolffelt,2011年

3
你不能在你的头上掷骰子
Jk。

2
@ jk01:正确。您也不能随便乱动。
S.Lott

@ S.Lott-我想你想说的是“一个典型的人不能使用幼稚的方法并且没有外部工具就无法在他们的头部高速一致地产生随机数”。
Inaimathi 2011年

1
@Inaimathi。不,我要说的要强得多。你不能随便乱动。您的大脑充满了偏见,因此您需要一种算法。没有有限的,有效的确定性算法是随机的。您根本做不到。没有足够简单的算法甚至是伪随机的,因此您无法近似随机。骰子小巧,方便,使用历史悠久。
S.Lott

1

我想不到。实际上,我希望您想到的任何内容都会有很多偏见,因此毫无价值。

如果我需要随机数,通常会掷骰子。


0

您是否正在寻求可以在脑海中完成的LCM?注意,这比骰子更好的想法仍然是荒谬的。

但是,这与任何有限,确定和有效的算法一样可能是随机的。

http://www.vias.org/simulations/simusoft_lincong.html

http://www1.i2r.a-star.edu.sg/~knandakumar/nrg/Tms/Probability/Probgenerator.htm

U_ {k + 1} =(a×U_k + b)mod(m +1)。

如果我们选择较小的值a = 5,b = 1和m = 7,则更容易看到它在做什么。您应该能够做到这一点。


我想知道是否有一个像样的随机版本(线性同余生成器(LCG)),真的很容易做到吗?a = 1理想,a = 2次理想。(到目前为止,我的想法在下
一条

(((我认为a = 1,b质数,b的选择很巧妙,对于较大的m可能是一个更可行的替代方案,仍然可以很好地工作。然后我注意到这可能不正确:对于b≈0或b≈m,它将依次遍历数字;所以我认为b≈m/ 2是答案;但是后来我注意到,这也可以是顺序的(对于较小的| b–m / 2 | / m),只是在两个位置交替出现。 b≈m/ 3,它可以是连续的,在3个位置之间交替;对于b≈m/ 99,该问题不再是交替形式,但是将需要约99个步骤来循环进行一次模减。))
亚伦·托马(Aaron Thoma)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.