我的孩子问了我这个问题,可我无法给出简洁易懂的解释。
所以我希望在SO上能有人给出答案。
我的孩子问了我这个问题,可我无法给出简洁易懂的解释。
所以我希望在SO上能有人给出答案。
区分一下难以预测的数字(计算机可以创建)与不确定性(对于计算机来说更加困难,理论上,任何物理实体如此)可能会有所帮助。
设计一个生成真正随机数的算法是很困难的,虽然可以轻松地想出一种生成在某种意义下看起来随机的意外数字的算法。
想象一下设计一个模拟掷骰子的算法。你可以轻松地制定一些程序,在每次迭代中生成不同的数字。但是你能否保证在长期(我指无限期)内,6出现的次数与其他任何数字相同?当设计一个好的随机数生成器时,这就是你必须承担的承诺。如果应用程序(例如彩票)需要,你必须提供关于随机性的强有力保证(即数学证明)。
值得注意的是人类在生成随机数方面表现非常差。计算机更糟糕,因为它们只遵循严格的命令集。人类只有在遵循算法,一组指令时才能生成好(伪)随机数。计算机也是如此。
尽管应该注意到,计算机可以从与其连接的“环境”中收集熵,例如键盘和鼠标操作,这有助于生成随机数(直接或通过种子PRNG)。
这不难,这里有几个免费的:12、1400、397.6