在Python中为科学实验选择随机种子的好方法是什么?

时间:2013-10-29 13:03:51

标签: python random

对于科学实验,我需要生成10个随机,固定大小的列表子集。为了使实验具有可重复性,我想用已知的种子初始化10个不同的random.Random()实例。

How different do random seeds need to be?似乎暗示使用种子1到10可能是一个坏主意,因为结果可能是线性相关的。

如果在这种情况下选择种子1到10是不好的做法,那么以可重复的方式选择种子的好策略是什么?

澄清:在程序运行时(使用特定数据集)始终使用相同的种子非常重要!最后,我的程序必须是确定性的。

2 个答案:

答案 0 :(得分:3)

使用random.org,我从2**0 to 2**28生成了10个随机数,作为种子:

187372311
204110176
129995678
6155814
22612812
61168821
21228945
146764631
94412880
117623077

使用评论中所述的线性种子序列can be problematic。来自random.org的数字:

  

[...]来自大气噪声,出于多种目的,它比计算机程序中通常使用的伪随机数算法更好。

答案 1 :(得分:1)

为了争夺声誉,我会在这里发表评论:;)

如何使用未知种子中的一些随机生成种子值? 记下你的数字,并保持它们的可重复性。

如果您需要真实随机数据,请尝试http://www.random.org,它们也有序列和分布生成器。

修改

这取决于你想要的随机数字种类。 你想要种子PRNG,所以你可能(双关语不想)想要从PRNG能够接受的整个范围内均匀分布的数字作为种子。然后,只需生成它们,然后将它们写在某处。如果您想阅读有关PRNG的内容,C ++ 11在其库中有一些好的:http://en.cppreference.com/w/cpp/header/random

HTH