可以使用负数作为随机数生成的种子吗?
这不是一个编程问题,但我希望这里的论坛里有人遇到过类似的情况。我正在用Python进行一些模拟实验。我需要用不同的随机数种子来运行很多次实验。我有两个问题:
- 负数作为种子可以吗?
- 种子之间需要保持一定的距离吗?
目前我正在使用random.org生成50个在-100000到+100000之间的数字,作为我的种子。这这样做可以吗?
谢谢。
2 个回答
8
引用自 random.seed([x])
:
可选的参数 x 可以是任何可以被哈希的对象。
正数和负数都是可以被哈希的,除了这些,还有很多其他的对象也可以。
>>> hash(42)
42
>>> hash(-42)
-42
>>> hash("hello")
-1267296259
>>> hash(("hello", "world"))
759311865
5
你的模拟结果是否需要可重复?通常情况下,我们用当前的系统时间来给随机数生成器(RNG)设置种子,这也是random模块的默认行为:
random.seed([x])
这个命令用来初始化基本的随机数生成器。可选的参数x可以是任何可哈希的对象。如果不提供x或者提供的是None,那么就会使用当前的系统时间;在第一次导入这个模块时,也会用当前的系统时间来初始化生成器。
只有在你需要结果可重复的时候,我才会建议偏离这个默认行为。如果可重复性很重要,那么使用random.org的种子是个不错的选择。
我应该在种子之间保持一定的距离吗?
不需要。对于一个高质量的随机数生成器,种子的选择不会影响输出的质量。一组种子[1,2,3,4,5,6,7,8,9,10]应该能产生和任何随机选择的10个整数一样好的随机性。但即使你希望选择一些随机且均匀分布的种子,保持一定的距离反而会破坏这种分布。