【发布时间】:2011-04-07 07:28:42
【问题描述】:
这不是一个编码问题,但我希望有人在这里的论坛中遇到过这个问题。我正在使用 Python 运行一些模拟。我需要使用不同的随机数种子运行许多复制。我有两个问题:
- 负数可以作为种子吗?
- 我应该在种子中保持一些距离吗?
目前我正在使用random.org 创建介于 -100000 和 +100000 之间的 50 个数字,我将其用作种子。这样可以吗?
谢谢。
【问题讨论】:
这不是一个编码问题,但我希望有人在这里的论坛中遇到过这个问题。我正在使用 Python 运行一些模拟。我需要使用不同的随机数种子运行许多复制。我有两个问题:
目前我正在使用random.org 创建介于 -100000 和 +100000 之间的 50 个数字,我将其用作种子。这样可以吗?
谢谢。
【问题讨论】:
可选参数 x 可以是任何可散列的对象。
正和负数都是可散列的,除此之外还有许多其他对象。
>>> hash(42)
42
>>> hash(-42)
-42
>>> hash("hello")
-1267296259
>>> hash(("hello", "world"))
759311865
【讨论】:
模拟的可重复性重要吗?播种 RNG 的规范方法是使用当前系统时间,这确实是 random's default behaviour:
随机种子([x])
初始化基本随机数生成器。可选参数 x 可以是 任何可散列的对象。如果 x 被省略 或无,使用当前系统时间; 当前系统时间也用于 初始化生成器时 首先导入模块。
如果重复性很重要,我只会偏离这种行为。如果它很重要,那么您的 random.org 种子是一个合理的解决方案。
我应该和种子保持距离吗?
没有。对于质量好的 RNG,种子的选择不会影响输出的质量。一组种子 [1,2,3,4,5,6,7,8,9,10] 应该产生与任何 10 个整数的随机选择相同的随机性质量。但即使选择随机均匀分布的种子是可取的,保持一定距离会破坏这种分布。
【讨论】: