是否可以通过物理过程模拟生成随机数?

如果我模拟骰子的物理滚动(即你捡起它,用手摇晃它,把它放到桌子上并记录哪一面最后“向上”......)就会产生一个“骰子”。随机"数字还是我只是有一个真正完成任何事情的复杂模拟。

有帮助吗?

解决方案

你会有一个复杂的模拟,它真的什么也没做。

(除了每次都返回相同的值,或者为现有的PRNG增加不必要的复杂性)

除非您使用“随机”播种模拟环境。变量(即取决于产生随机数的不同方法),你将总是得到相同的值,因为过程中的每一步都会以相同的方式发生。

假设您使用了基本伪随机数生成器(PRNG):

由于您的模拟只会像您使用的其他PRNG一样随机,您也可以直接使用其他PRNG,而无需额外的工作! (实际上,除了使输出更少随机而不是基本PRNG的值之外,您的模拟可能无法执行任何操作)

其他提示

是的,你会“只是有一个真正完成任何事情的复杂模拟”。

为什么要模拟随机物理过程,何时可以实际使用真实过程?

在SO上有关于随机数生成器的大量问题。这里只是几个:

真随机数生成器

是否存在无状态随机数生成器?

什么类型的随机数发电机用于赌场游戏行业?

你的算法将是一个伪随机数生成器,也就是说它将接收一个随机种子并产生看起来相当随机的潜在大数字字符串。

无法保证您的随机输出具有加密或其他目的所需的质量。我倾向于认为你的输出中会有不合需要的重复模式,并且太多的工作将转向问题的物理学,而不足以产生伪随机性。 (抱歉,这是一种愚蠢的清洗,但简而言之。)存在有效的伪数生成器,我会使用其中一个架子。

尽管如此,这可能是一个有趣且信息丰富的实验,用于您自己的目的。

后来。

除非你注入一些随机(或伪随机)因子,否则模拟每次都会产生相同的结果。

它仍然是一个伪随机数,因为大概你会使用一个伪随机数发生器来模拟手中骰子周围的所有弹跳。

首先,你需要定义'随机'。当然,您可以使用一组奇怪的计算来生成无法预测的数字。但是你不会得到有用的随机性或数字的均匀分布。

您所描述的物理模拟在计算中的某个点实际上需要某种随机数生成器。幸运的是,random()很容易使用。

除非你准备好模拟两个完整模具的量子状态,否则你将没有任何随机的......

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top