播种Python的随机数gen

2024-04-26 03:58:46 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 代码程序random种子seedrandrangeirand
2条回答

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

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]

如果在代码开头没有为随机数生成器设定种子,则it is seeded with the current system time将确保每次运行代码时它都生成不同的随机数。在

如文档所述,当您使用随机.seed您有两种选择:

在随机.seed()-来自当前时间或操作系统特定随机源(如果可用)的种子

在随机.seed(a) -哈希(a)被用作种子

如果您想在程序的两个实例之间有不同的数字,那么使用时间作为种子是更好的做法,但是确实很难调试。在

使用硬编码的数字作为种子可以使您的随机数更加可预测。在

相关问题 更多 >