python随机数种子seed()入门级理解

目录

不设置种子

设置种子seed() 

seed()存在的意义 


不设置种子

from random import *
n = 0
while True:
    a = [int(random()*100+1) for i in range(10)] 
    if n == 3:
        break
    n += 1
    print("无种子:", a)

无种子: [99, 1, 39, 81, 16, 75, 39, 96, 24, 68]
无种子: [22, 5, 12, 40, 56, 25, 82, 21, 3, 15]
无种子: [59, 24, 29, 84, 76, 100, 35, 47, 27, 65]

可以发现不加种子每次生成的随机序列都是不相同

设置种子seed() 

from random import *

#  随机种子为1
n1 = 0
while True:
    seed(1)
    a = [int(random()*100+1) for i in range(10)]
    if n1 == 3:
        break
    n1 += 1
    print("种子为1:", a)

print("*"*20)

#  随机种子为2
n2 = 0
while True:
    seed(2)
    b = [int(random()*100+1) for i in range(10)]
    if n2 == 3:
        break
    n2 += 1
    print("种子为2:", b)

种子为1: [14, 85, 77, 26, 50, 45, 66, 79, 10, 3]
种子为1: [14, 85, 77, 26, 50, 45, 66, 79, 10, 3]
种子为1: [14, 85, 77, 26, 50, 45, 66, 79, 10, 3]
********************
种子为2: [96, 95, 6, 9, 84, 74, 67, 31, 61, 61]
种子为2: [96, 95, 6, 9, 84, 74, 67, 31, 61, 61]
种子为2: [96, 95, 6, 9, 84, 74, 67, 31, 61, 61]

 可以看到设定种子之后生成的随机数列都是一模一样的,同一种子所对应的随机数列是一样的,不同种子对应的随机数列不一样。

就好比给那个特定时刻生成的随机序列起了一个代号

[14, 85, 77, 26, 50, 45, 66, 79, 10, 3] 的代号为1

[96, 95, 6, 9, 84, 74, 67, 31, 61, 61]的代号为2

当然我们也可以给它取个名字,比如一个叫 张三,一个叫 李四

代码如下

from random import *

n1 = 0
#  随机种子为1
while True:
    seed('张三')
    a = [int(random()*100+1) for i in range(10)]
    if n1 == 3:
        break
    n1 += 1
    print("种子为张三:", a)
print("*"*20)

#  随机种子为2
n2 = 0
while True:
    seed('李四')
    b = [int(random()*100+1) for i in range(10)]
    if n2 == 3:
        break
    n2 += 1
    print("种子为李四:", b)

种子为张三: [90, 99, 91, 89, 88, 30, 83, 47, 3, 32]
种子为张三: [90, 99, 91, 89, 88, 30, 83, 47, 3, 32]
种子为张三: [90, 99, 91, 89, 88, 30, 83, 47, 3, 32]
********************
种子为李四: [88, 14, 13, 79, 42, 35, 51, 7, 40, 49]
种子为李四: [88, 14, 13, 79, 42, 35, 51, 7, 40, 49]
种子为李四: [88, 14, 13, 79, 42, 35, 51, 7, 40, 49]

seed()存在的意义 

好了,现在你已经知道了seed是个啥玩意儿了‘

但是,有的朋友可能觉得这个玩意儿好像没啥大用。

可是我要对你们说,用处可大了!

用在哪里呢?    数据仿真

在科研的过程中,有些数据很难获得或者获得的成本太高,那么只能用随机数生成器去生成一系列数据去进行仿真研究,仿真就是模拟正式情况。

论文写好之后,投出去的时候要有一个专家组审核流程,人家就要用到你的这些数据自己亲自去操作一下,看看你通过数据建的模型到底咋样。一般的实证数据都是现成的,假设做的是实证,你的数据集在投论文的时候就会一并交上去。但是计算机随机生成的数据怎么直接给呢?

seed的作用就体现出来了,随机生成数据时,用这个seed就相当于给你的随机数据做了个标识

等专家想要验证模型时,只需要在生成数据之前用一下seed,专家和咱随机生成的数据就是一样的。

比如,你随机生成数据时设置的seed(1),专家生成数据时也先设置seed(1),后面你们的数据就是一样的。

当然,这只是我个人理解的,或许还有其他作用,你也可以在评论区告诉我哦。

  • 12
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值