我们可以使用无理数(如π和e)生成随机数吗?


21

,和等无理数在小数点后具有唯一且不可重复的序列。如果我们从这样的数字中提取第个数字(其中是调用该方法的次数),并按原样制作一个数字,我们是否不应该得到一个完美的随机数生成器?例如,如果我们使用,和,则第一个数字是123,第二个数字是471,下一个数字是184,依此类推。πe2nn2eπ


30
您脑子里对“随机”有一个奇怪的定义。“随机”是指“不可预测的”。您的序列如何不可预测?您对“随机”有什么定义?也许您所说的“随机”有另一个名字。
埃里克·利珀特

7
请注意,插口算法可用于生成pi中的任何十六进制数字,而不必生成先前的数字。
rcgldr

10
@EricLippert并非所有的伪随机数生成器都是可预测的吗?
Federico Poloni

7
这个词已经出现了几次:这是一个“伪随机数”,而不是一个“随机数”。它是通过算法生成的数字(因此不是随机数),但是具有许多随机数具有的理想属性。另一种算法是“ NYC电话簿”算法,在该算法中,您可以按字母顺序浏览电话号码列表,并从每个电话号码中获取最后一位数字。不是随机的,而是具有一些相当不错的统计行为的伪随机!
Cort Ammon-恢复莫妮卡

5
“伪”的意思是“类似于但不相似”。因此,伪随机数类似于但不是随机数。因此,我在这里不遵循您的思路。现在,加密强度PRNG具有理想的属性,即如果内部状态对于攻击者未知,我们拥有的任何统计测试都无法将加密PRNG与真实RNG区别开来,这包括它们缺乏可预测性。但是pi的数字不具有该属性。它们是高度可预测的。
埃里克·利珀特

Answers:


17

最明显的缺点是基于无理数的PRNG算法不必要的复杂性。与LCG相比,它们需要为每个生成的数字进行更多的计算。而且这种复杂性通常会随着您按顺序进行的进一步增加。在1000台计算机上(以2010年为准),以十分之二的位数计算256位π花费了23天的时间-对于RNG来说,这是一个相当高的复杂性。


47

对于完美的任何合理定义,您描述的机制都不是完美的随机数生成器。

  • 不重复是不够的。十进制数是不可重复的,但是它是一个可怕的随机数生成器,因为答案是“总是”为零,偶尔是一个,再没有别的了。0.101001000100001

  • 我们实际上不知道每个数字是否在或 的十进制扩展中是否同样出现(尽管我们怀疑它们确实如此)。πe

  • 在许多情况下,我们要求随机数不可预测(实际上,如果您问随机人“随机”是什么意思,他们可能会说出不可预测性)。众所周知的常数的数字是完全可以预测的。

  • 我们通常希望相当快地生成随机数,但是生成数学常数的连续数字往往非常昂贵。

  • 但是,确实是和 的数字在统计上看起来是随机的,从某种意义上来说,每个可能的数字序列似乎都应该以应该出现的频率出现。因此,例如,每个数字确实十分接近十分之一。每个两位数序列非常接近一百分之一,依此类推。πe


11
第三点,必须对生成过程进行某种“秘密”输入,以使其不可预测(如果我们不想再依赖另一个随机数生成器,则生成过程本身应该是确定性的)。这种额外的输入通常称为种子
离散蜥蜴

6
@Discretelizard的确如此,但是除了“返回从位置开始的连续数字”之外,没有太多的播种空间。到时候你见过数字,只有第一个内发生的顺序几次位数的,所以这是第一个中是唯一的概率高的数字,你知道的种子。2 日志小号小号2 π 小号s2logss2πs
David Richerby

2
@Barmar:到那时,您必须问这种技术是否真的比“标准” PRNG更具性能(和更节省空间)。
凯文

2
pi或e的数字完全不可预测的,特别是因为查看器/接收者/代码破坏者等不知道您已经到达的顺序如何。如果您从序列的数字237423开始,那么将花费很长的时间来弄清楚,这是随机的。
逆向工程师

10
@DaveBoltman如果我们不做密码学之类的事情,那么没人会在意它。如果我们正在执行加密,这是一个标准的假设,即您的对手知道您使用的是哪种算法,在这种情况下,包括序列来自哪个非理性数字以及如何选择数字,除了诸如“从数字开始”。如果对手不知道您正在使用的数字,那么可以肯定,下一位数字可能是任何数字,但随后他们猜测是,游戏开始了。smy birthday
David Richerby

29

从密码学上讲,它是无用的,因为对手可以预测每个数字。这也是非常耗时的。


11
OP从未提及加密技术...
AnoE

13
@AnoE那么?该过程在密码上是无用的,仍然是有意义的,因为加密是对随机性的狂热用户。如果您打开设备/dev/random/dev/urandom则总是有人会打开密码。
格雷格·施密特

6
您会对实时PRNG生成中无用的加密安全性感到惊讶。GPU PRNG中经常使用无理数。在许多应用程序中,如何“保护” PRNG根本无关紧要。诸如相干噪声生成之类的重要问题是分布的质量,周期的重复频率以及相邻种子引起的相关影响(这需要雪崩混频器进行修复)。老实说,您的答案是错误的,不属于此处,应该删除。
WHN

6
这不是问题的答案。请注意,链接问题的操作使用随机数来进行蒙特卡洛分析。应该考虑解决所提出问题的更新。 mathoverflow.net/questions/26942/...
CramerTV

8
当然,在许多应用程序中,PRNG不需要加密安全。但是OP没有询问它是否对某些目的有用,他们询问这种方法是否是“完美的RNG”。尽管他们尚未弄清“完美”的含义,但它不适合RNG的主要用途之一这一事实似乎与回答该问题非常相关。
Geoffrey Brent

7

更新后,许多人指出,随机数生成器是不一样的事,作为一个单一的正常序列)

如果您问是否可以从得到正常序列(即所有数字都统一出现),那么mathoverflow上有几个答案。例如,有关Pi的数字分布的答案是:π

...它被认为的是是一个正常数(〜每个数字序列的均匀分布)。π

有关数字分配数据,请参见例如http://www.eveandersson.com/pi/precalculated-frequencieshttps://thestarman.pcministry.com/math/pi/RandPI.html(前1000个数字):

在此处输入图片说明

在mathoverflow上,还有以下不错的答案:


3
如果您认为问题是重复的,那么为什么要回答呢?您应该简单地标记它,而不是强化不希望的发布行为。
dkaeae

8
@dkaeae不支持其他站点上重复的问题。此外,在不同站点上的同一问题可以获得不同的答案。在这种情况下,诸如数学之类的网站可能不会过多考虑安全问题。另请参阅此答案。请注意,我们不鼓励同时在多个站点上问相同的问题,因为这往往会导致工作浪费。但是,不同人在不同时间,不同地点的相同问题通常是可以的。
离散蜥蜴

6
不幸的是,仅仅因为数字是正常的并不意味着输出数字就可以为您带来良好的RNG。这种RNG的输出仍然是完全可预测的。是否可接受可能取决于应用程序。因此,我认为这并不像说“ pi正常,大小写关闭”那么简单。
DW

2
那只是对前几位数的实证观察?那是什么意思?
元帅工艺

1
@DW我提到我打算使用π和e之类的数字组合。并且请说一下,如果我们不知道发电机的运行顺序到底有多远,那么输出将如何可预测?
Abhradeep Sarkar

1

通常,这种方法不起作用:“随机性”并不意味着您会得到很多不同的数字,但还有其他方面。例如,经典测试是查看所有两位或三位等组合是否以相同的频率出现。这将是一个非常简单的测试,可以排除明显的非随机结果,但到目前为止仍然过于简单,无法检查真正的随机行为。

请参阅有关随机性测试的Wikipedia页面,作为与此相关的主要来源的链接的集合。他们确实提到了很多听起来很复杂的概念。对此进行深入讨论不是很重要-但很显然,直觉上不可能声明一个特定数字作为此类数字的良好来源。

积极一点:对于特定的非理性数字,您当然可以随意尝试;即,将数字计算为足够大的数字,然后通过所有已知的测试来运行它(有用于此目的的工具,请参见上面的链接)。如果该措施是不够好为您的使用情况下,如果你都知道,这是密码学应用显然没用,总是得到相同的数字,如果你要从头开始,而且如果你过去的质量可能会降低n你选为了测试随机性,您可以使用这些数字。但是使用专用的(伪)随机数生成器会更好。没有什么能击败良好的物理随机性来源。


4
πe

3
Ayrat的答案链接到数学家进行过这些测试的其他站点。他们认为,但尚未证明π符合统计检验。
Barmar

是的,这就是我上一段的意思-仅凭经验尝试是值得的;但严格来说,尚未证明(或不能简单地假定它为真)任意“看似复杂”的非理性。@ DavidRicherby,@ Barmar
AnoE

1

与许多伪随机数一样,它提供了一个好的随机数,直到您意识到它是如何产生的为止。您选择的无理数(非代数和非先验)是很普遍的,因此比其他人更容易猜测。如果您选择不常见的生成器,则我看不到此方法有任何问题。


4
除了严重的低效率之外,没有问题,您依赖任何对手而不知道您的算法是什么,错误选择生成器可能导致很差的序列,……
David Richerby

4
2πe

超越数是不是代数的实数。实数不可能既非代数又非先验。
Brady Gilg
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.