您是否知道或已设计出任何实用的,易于学习的“头脑中”算法,从而使人们可以生成(有点“真实”)随机数?“头上”是指..优选地没有任何外部工具或设备。同样,期望高输出(每分钟许多随机数)。
在SO上询问此问题,但并没有引起太大兴趣。也许这更适合程序员。
您是否知道或已设计出任何实用的,易于学习的“头脑中”算法,从而使人们可以生成(有点“真实”)随机数?“头上”是指..优选地没有任何外部工具或设备。同样,期望高输出(每分钟许多随机数)。
在SO上询问此问题,但并没有引起太大兴趣。也许这更适合程序员。
Answers:
这是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。该算法很简单,可以在您的计算机中执行头。
查看有关风水学的这篇文章。特别是有关生成风水图表的部分。它涉及使用二进制数字的伪随机数生成技术和一些简单的递归计算。看来您可以相当轻松地做到这一点(尽管一张纸会有所帮助)。
免责声明:我自己还没有尝试过;当我需要一个足够随机的数字时,我可以从中得到一些输出/dev/random
,可以使用方便rand
的任何语言使用,也可以掷出我信任的d20。
如果您是一个数学天才,那么使用Middle-square方法是一种相当轻便的计算方法,即使这种方法明显不可靠。
我认为一个合理的假设是,您必须依赖大脑中存储的大量口头信息。来源可以是任何东西,例如歌曲歌词,诗歌,Monty Python草图,但必须是您心中一定知道的东西。
然后,您必须选择一个相当随机的部分,以尽可能消除无意识的偏见。例如,一种方法是选择一首歌曲,选择k
10到20之间的数字,然后k
在其歌词中找到第一个字母。
显然,由于字母的频率不同,这本身并不会给您带来均匀的分布,但是尽管如此,它还是一个随机字母,或者至少与我所相信的接近,除非我相信没有外部来源。
更新:顺便说一句,当人们被要求写一个随机的说掷硬币的序列时,到目前为止,最常见的错误是使您的序列“太随机”:结果相同的运行将太短,运行时间很简单分析将揭示。该方法主要旨在避免这种陷阱。当然,此行程偏差的阴影可能会引起其他异常,但是您需要进行适当的实验才能找到它们。具有讽刺意味的是,仅靠思考无法找到一种通过仅靠思考产生随机数的算法。
如果我需要一个60(秒)的随机数,则可以这样做。无论何时,都要取适当的模。下午4:17:23(模拟模辊)变为5。
很好的问题。我担心一个好的答案可能会非常困难。
但是首先,当涉及到两个人时,很容易产生“真实的”随机性:只需让其中一个人默默地计算其头部模数,然后另一个人在任意间隔后说“停止”。之后,可以使用标准方法将此数字转换为其他分布。
为了使该方法更可靠,模数不能太大,否则会对小数产生强烈的偏见。我真的很想看看是否有任何工作可以分析这种方法的随机特性。
这是一个复杂的问题。我将尽力解释一下,而又不要在杂草中走得太远。
首先,我们必须问“什么是真正的随机性”?这样的讨论很快就演变成哲学领域,但是要旨是:“宇宙真的是随机的吗?”?换句话说,如果您量化时间和物质,是否可以从当前状态计算下一个宇宙状态?如果是的话,那么宇宙就是确定性的,就没有真正的随机性(见我对“哲学”的意思是什么?)
因为很难定义“真正的随机性”,所以我们经常满足于“伪随机性”。当然,在计算机上生成“随机”数字时通常需要这样做。
最简单的伪随机数生成器类似于Dilbert著名的“ 9..9 ....”算法。但是从直觉上看,这似乎不太好(当然是个笑话)。统计学家已经开发出了许多测试方法,用以说明一系列所谓的随机输出是否“良好”。从“卡方检验”的维基百科页面开始,您可以花一个下午的时间阅读有关这些检验的信息。
一个简单的计算机算法(例如“线性同余生成器”)会产生足以用于卡方检验的数字(但是,您仍然需要从某种东西中“播种”该算法)。
“良善”的下一个步骤是“密码学上强的随机性”,这意味着给定序列a1,a2,...,除非您使用大量计算,否则您无法以“合理的概率”预测序列中的下一个数字。这些数字有时称为“计算伪随机”。获得这样一个序列的一种常见方法是通过这样的“哈希链”:a1 = SHA512(a2),a2 = SHA512(a3),...由于我们(根据经验,而不是数学证明)认为SHA512是在计算上难以逆转,我们认为a2仅在给定a1的情况下“不可能”进行预测。
因此,现在出现了问题,根据您的问题所规定的规则,人类可以做的最好的事情是什么?众所周知,人类不擅长产生随机性。曾经有一个网站,您会试图通过“随机”键入H,T,T,H,H,T,T等来生成硬币翻转,就好像您在翻转硬币一样(但是您在你的脑袋)。一段时间后,该网站将开始预测您的翻转超过50%的时间(使用隐马尔可夫模型)。我们对此很不好。
有多种方法可以使用各种可能在您脑海中可行的混合技术来改善这种情况。甚至还有我可能梦applications以求的应用程序,为什么您会想要这样做(政治犯想要加密发送给外部盟友的消息)。但是我认为这篇文章足够长。:)
高度随机化,每分钟大量且由人产生?不会发生
您将要遇到的主要问题是
这导致许多密码学家放弃“头戴式”技术,而转向随机的外部过程,因为根据“头戴式”数字确定模式太简单了。
离题但有趣
虽然这不是一种在您的脑海中生成随机数的机制,但是Solitaire算法(如Neal Stephenson的Cryptonomicon所描绘的)证明了将随机数用于加密目的有多么困难。它只需要一包普通扑克牌就可以创建一个相当安全的输出,但是这种方法非常复杂。
我真的很好奇人们可能会就此问题提出的任何建议。
请离开办公桌,然后前往拉斯维加斯。
人类有数十种随机程序。您可以在拉斯维加斯看到所有这些。
您有旋转的圈子。你有翻滚的立方体。而且您已经洗牌了。他们都表现出色。
多维数据集也许是最古老的。显然在某一时刻使用了细长的四面棍。几千年来,对称的绵羊羊角叉骨流行。自从大约在开发语言的同时,我们就一直在使用这类随机器。
http://itunes.apple.com/us/app/motionx-dice/id287509231?mt=8
“任何考虑产生随机数的算术方法的人,当然都处于犯罪状态”
-约翰·冯·诺伊曼
您是否正在寻求可以在脑海中完成的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,则更容易看到它在做什么。您应该能够做到这一点。