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

时间:2009-03-06 23:55:51

标签: simulation prng random

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

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

7 个答案:

答案 0 :(得分:6)

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

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

除非您使用“随机”变量播种模拟环境(即依赖于生成随机数的不同方法),否则您将始终获得相同的值,因为过程中的每个步骤每次都会以相同的方式发生。

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

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

答案 1 :(得分:1)

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

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

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

True random number generator

Do stateless random number generators exist?

What Type of Random Number Generator is Used in the Casino Gaming Industry?

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

后来。

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

答案 4 :(得分:0)

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

答案 5 :(得分:0)

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

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

答案 6 :(得分:0)

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