我的孩子问了我这个问题,可我无法给出简洁易懂的解释。
所以我希望在SO上能有人给出答案。
我的孩子问了我这个问题,可我无法给出简洁易懂的解释。
所以我希望在SO上能有人给出答案。
那么,为什么电脑不能生成随机数呢?因为电脑只能遵循指令,而随机数则相反,不会遵循指令。如果你通过遵循指令来生成随机数,那么它就不是真正的随机数了!试想一下,要让别人按照指令选择一个随机数,这是有多困难啊。
这里有一个适合孩子的解释:
准备一个骰子(面数不重要)
在一张纸上写下以下内容:
向他们展示骰子和纸张。解释骰子代表计算机,纸张代表告诉计算机返回什么数字的数学或算法。
现在掷骰子。告诉他们你正在“种子”或询问计算机从一个随机的骰子位置开始。
按照纸上的每个步骤(向右移动),移动骰子。
解释计算机必须从一个起始值开始。这可以由许多来源给出,比如日期或鼠标移动。告诉他们,他们投掷骰子的方式决定了起始值。
解释纸片是电脑得到下一个数字的方式。告诉他们,纸上的指令可以像随机生成器的算法一样轻松更改。
玩得开心,向他们展示只受想象力限制的各种可能性。
现在回答你的问题:
告诉他们,当一个好的数学家知道起始值和计算机当前所处的步骤时,这位数学家就可以知道下一个随机数是什么。
无论孩子用什么算法,你应该仍然能够推断出他们的算法。告诉你的孩子,在计算机世界中,没有什么是隐藏的,甚至只是观察到的数字,随机数算法也可以被发现。
……作为副作用,如果孩子能够想出一个让你难以推断出下一个序列的好算法,那么你就有一个聪明的孩子。 :D
以下是我关于随机性的解释,适合大约八年级的学生。希望您的孩子们会发现它有用!
尽管看起来令人惊讶,计算机并不聪明。 计算机必须盲目地遵循它们的指令,因此是完全可预测的。事实上,不遵循这种方式的计算机实际上是坏掉的!我们希望计算机恰好按照我们告诉它们的那样做。
这正是让计算机生成随机数变得困难的原因。计算机必须被告知如何生成随机数的一系列指令。但这并不是真正的随机,因为如果您把指令和相同的起始点给任何其他人,他们都可以得出相同的答案。所以只是根据指令执行,计算机不能真正生成随机数。
请让他们设计一种逐步生成随机数的方法。
不要接受“从1到10选择一个数字”作为答案;)
尝试解决这个问题会说明从指令集中生成随机数的困难,就像计算机实际需要做的那样。
因为无论输入什么,算法每次都会产生完全相同的输出。而且你不能只提供一个“随机”输入,因为你首先就是在尝试生成随机数。
这真的必须要做
因为真正的随机源只存在于量子级别。通过适当的硬件辅助,计算机可以访问这个级别。例如,它们可以采样放射性同位素的衰变或热电阀的噪声。但你的基本PC没有这些酷炫的东西。