播种 Python 的随机数生成器

use*_*609 0 python numpy scipy

我正在使用irand=randrange(0,10)在程序中生成随机数。这个随机数生成器在代码中多次使用。在代码的开头,我用random.seed(1234). 这是正确的做法吗?

Chr*_*ler 5

在开始时为随机数生成器设置种子将确保每次运行代码时生成相同的随机数。这可能是也可能不是“正确的做法”,具体取决于您计划如何使用随机数。

import random

# Initial seeding
random.seed(1234)
[random.randrange(0, 10) for _ in range(10)]
# [7, 1, 0, 1, 9, 0, 1, 1, 5, 3]

# Re-seeding produces the same results
random.seed(1234)
[random.randrange(0, 10) for _ in range(10)]
# [7, 1, 0, 1, 9, 0, 1, 1, 5, 3]

# Continuing on the same seed produces new random numbers
[random.randrange(0, 10) for _ in range(10)]
# [0, 0, 0, 5, 9, 7, 9, 7, 2, 1]
Run Code Online (Sandbox Code Playgroud)

如果您没有在代码的开头设置随机数生成器的种子,那么它会以当前系统时间作为种子,这将确保每次运行代码它都会生成不同的随机数。

  • 与接受的答案相比,这是更好的答案。 (2认同)