|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
random.seed(a=None, version=2)
-- 初始化随机数生成器
参数 含义
a
1. 如果省略该参数或者将其值设置为 None(默认),将使用当前系统时间作为随机数种子(如果操作系统提供了随机性来源,则用它来代替系统时间)
2. 如果参数 a 为整数,则直接被用作随机数种子. 该参数的值也可以是字符串、字节、字节数组等
version
1. 如果 version=2(默认),字符串、字节或字节数组对象的每一个位都将比转换成整数使用
2. version=1,用于从旧版本的 python 中复制随机序列,字符串和字节算法生成更窄的种子范围
速查宝典的seed函数看不懂参数的含义,涉及知识盲区,有哪位大佬能用通俗的话帮忙解答一下吗
本帖最后由 Twilight6 于 2020-7-24 14:00 编辑
我们先了解下随机数种子是什么,看下面资料:
随机数就是就随机数种子中取出的数。种子就是个序号,这个序号交给一个数列管理器,通过这个序号,你从管理器中取出一个数列,这个数列就是你通过那个序号得到的随机数。
但这个随技术并不真正随机。因为它是通过某个算法的得到。也就是说你给数列管理器同一个序号将得到同样一个“随机”数列。
从甲鱼哥的速查宝典的标题就可以看出,random 是生成伪随机数,而不是真正意义上的随机
而 seed 就是设置下次随机的种子,也就是下次随机数的序号,而每个随机数在系统中都有自己的种子(序号),所以你使用 seed 可以使得下个随机数直接生成对应序号的随机数
所以当你 seed 的参数是不变的,也就会导致实际上是序号不变,也就会一直生成这个随机数,看下面的例子:
- import random
- random.seed(10)
- print(random.random())
- random.seed(10)
- print(random.random())
- random.seed(10)
- print(random.randint(1,100))
- random.seed(10)
- print(random.randint(1,100))
复制代码
输出结果:
- 0.5714025946899135
- 0.5714025946899135
- 74
- 74
复制代码
而且不同的随机数数列管理器,种子序号自然也会不同,看下面的代码:
- import random
- random.seed(10)
- print(random.randint(1,10))
- random.seed(10)
- print(random.randint(1,100))
复制代码
输出结果:
|
|