这不是一个编码问题,但我希望有人在这里的论坛中遇到过这个问题。我使用Python来运行一些模拟。我需要使用不同的随机数种子来运行许多复制。我有两个问题:能否使用负数作为随机数生成的种子?
- 负数可以作为种子吗?
- 我应该在种子中保持一段距离吗?
目前我正在使用random.org在-100000和+100000之间创建50个数字,我将其用作种子。这个可以吗?
谢谢。
这不是一个编码问题,但我希望有人在这里的论坛中遇到过这个问题。我使用Python来运行一些模拟。我需要使用不同的随机数种子来运行许多复制。我有两个问题:能否使用负数作为随机数生成的种子?
目前我正在使用random.org在-100000和+100000之间创建50个数字,我将其用作种子。这个可以吗?
谢谢。
重要的是你的模拟是可重复的吗?可以播种RNG规范的方法是使用当前的系统时间,并且实际上这是random's default behaviour:
random.seed([X])
初始化基本随机数发生器。可选参数x可以是任何可哈希对象的 。如果x省略 或None,则使用当前系统时间; 当前系统时间也用于 当 模块首次导入时初始化发生器。
我只会偏离这种行为,如果重复性很重要。如果它是很重要,那么你的random.org种子是一个合理的解决方案。
我应该在种子中保持一段距离吗?
号对于质量好的RNG,种子的选择不会影响输出的质量。一组种子[1,2,3,4,5,6,7,8,9,10]应该产生与10个随机选择相同的随机性质量。但即使需要选择随机均匀分布的种子,维持一段距离也会破坏该分布。
可选参数x可以是任何可哈希对象。
都是正数和负数是可散列的,还有许多其他的物体。
>>> hash(42)
42
>>> hash(-42)
-42
>>> hash("hello")
-1267296259
>>> hash(("hello", "world"))
759311865
感谢您的回答。是的,模拟可重复是非常重要的。 让我问一个后续问题。你可以从你的答案中解释,我是否选择使用random.org上的公用程序绘制的50个种子,或者我选择[1,2,...,50]作为种子,随机性的质量将是相同的。万分感谢。 – Curious2learn 2010-09-02 15:14:52
@Curious对于高质量的RNG,质量不应该依赖种子。种子的目的仅仅是使一个算法能够产生许多不同的随机数字流。不同的种子给出不同的流。 – 2010-09-02 15:23:26
谢谢!你会说Python中的标准RNG(使用函数random.uniform(a,b)获得一个好的RNG吗?) – Curious2learn 2010-09-02 18:09:37