python中种子数是什么意思

您所在的位置:网站首页 西方文明史的答案 python中种子数是什么意思

python中种子数是什么意思

2024-06-15 08:14| 来源: 网络整理| 查看: 265

没有看书,凭借记忆来随便答一下。答错了就当开阔思路好了。

random 是怎样实现随机数的?

我凭借记忆来猜测一下random的实现,在指定好随机范围和随机数种子(seed)的情况下,生成的随机数序列应该是一样的。也就是说,你先调用一次random.seed(1),然后调用 10 次random.randint(1, 9)。得到一个数字序列 A。然后你重新设置随机数种子为 1,random.seed(1),然后再调用10次,random.randint(1, 9),又生成一个数字序列 B,不出意外的话,序列A和序列B的结果应该是一样的。

import random

random.seed(1)

print('数字序列A', end=' ')

for i in range(9):

print(random.randint(1, 9), end=' ')

# 重新设置随机数种子 为 1

random.seed(1)

print('数字序列B', end=' ')

for i in range(9):

print(random.randint(1, 9), end=' ')

# 数字序列A 3 2 5 2 8 8 8 7 4 数字序列B 3 2 5 2 8 8 8 7 4

那这样还算生成随机数吗?它在我的电脑上是这个结果, 在你的电脑上可能也是一个确定的结果. 在设置好随机数种子以后,使用 random 工具生成每一个数其实都是已经确定好的。于是,人们通常在产生一次随机数后就重新设置一次随机数种子,这样就能保证生成的随机数不会依照之前的那个确定的数字序列了, 当然它还是一个确定的数字序列. 如果你设置随机数种子为 2, 那它生成随机数时就按照随机数种子为 2 时对应的那个随机数序列来生成随机数. 如果你设置随机数种子为 3, 那它生成随机数时就按照随机数种子为 3 时对应的那个随机数序列来生成随机数. 但是如果你每次生成随机数时都指定随机数种子为 2 或者 3,那么生成的随机数就又冥冥之中被确定了?

因此, 人们常用 time.time() 来当做随机数种子, 来代替前文的随机数种子1 2 3。time.time() 返回一个浮点数, 代表当前的时间, 用法如下:

import time

import random

random.seed(time.time())

print('数字序列A', end=' ')

for i in range(9):

print(random.randint(1, 9), end=' ')

# 重新设置随机数种子

random.seed(time.time())

print('数字序列B', end=' ')

for i in range(9):

print(random.randint(1, 9), end=' ')

这样, 我每次点运行时的时间肯定不一样, 相应的每次设置的随机数种子就不一样, 对应的随机数序列就不一样. 当然每个随机数种子代表的随机数序列还是确定的, 并没有随机. 因此人们把 random 生成的随机数称为 "伪随机数". 这并不是说在大数据量地调用 random 产生随机数的情况下, 它生成指定范围内的随机数序列中每个数字出现的概率不相等, 而是想要描述前文中描述的现象.



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3