今天,我刚刚被告知seed()程序员的功能比我更有经验.我通常只choice()使用列表作为参数调用,因为我不再需要随机数功能.
我的程序员朋友告诉我调用种子是必要的,因为否则Python总是以零作为默认种子开始随机数操作.这意味着虽然数字看似随机,但我们每次都得到相同的序列.
这让我很奇怪.choice()例如,该函数是否真的不会在种子出现之前调用种子?或者是它无法以编程方式更改其种子的原因,因为它本身会涉及选择一个随机数,显然如果我们的最终目标也是选择一个随机数,这有点问题!
我在这里咆哮,但我想知道是否有人清楚地知道这一切是如何实现的.
Kar*_*tel 29
你的朋友出了问题,如果他读了这个seed()函数的文档就知道了:
初始化基本随机数生成器.可选参数x可以是任何可哈希的对象.如果省略x或None,则使用当前系统时间; 当前系统时间也用于在首次导入模块时初始化生成器.如果操作系统提供随机源,则使用它们而不是系统时间(有关可用性的详细信息,请参阅os.urandom()函数).
(强调我的.)
他根据他对其他语言的工作原理的猜测而猜测.seed()主要提供该功能,以便您可以获得可重现的伪随机数流(这对某些特定应用程序是必需的).
您直接从random模块调用的函数实际上是random.Random类的隐藏实例的方法的别名.每一个实例,至少在效果上调用seed()其内__init__().
该choice()功能显然seed()在操作前不会调用,因为这意味着在每次选择之前重新播种,这会破坏播种的目的.
| 归档时间: |
|
| 查看次数: |
16113 次 |
| 最近记录: |