5

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

随机种子需要有多大不同?似乎表明使用种子 1 到 10 可能不是一个好主意,因为结果可能是线性相关的。

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

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

4

2 回答 2

4

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

187372311
204110176
129995678
6155814
22612812
61168821
21228945
146764631
94412880
117623077

如评论中所述,使用种子的线性序列可能会出现问题。来自 random.org 的数字:

[...] 来自大气噪声,在许多方面它优于计算机程序中通常使用的伪随机数算法。

于 2013-10-29T14:26:32.800 回答
1

为了争夺名声,我把我的评论放在这里:;)

使用来自未知种子的随机数来生成种子值怎么样?写下你的数字,并保留它们以备重现。

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

编辑

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

高温高压

于 2013-10-29T14:40:22.677 回答