你真的会用Python随机数种子吗——Python生成随机数随机种子“失效”:Jupyter中不同cell中生成的随机数不一致

在Python中经常会生成很多随机数,例如Python自带的random库、科学计算库NumPy、深度学习框架PyTorch等都可以生成随机数。
同时为了固定生产的随机数、使得随机数生成可复现,很多时候都会设置随机种子,这样每次都能生成固定的随机数,这样给我们的感觉就像“只要设置了随机数,后面每一次生成的随机数都是一样的”,但是实际上不是这样的:
random
numpy
torch
可以看到,3个库在设置随机种子后,生成的3个随机数都是不同的,所以我们之前的哪种理解是错误的,随机种子固定的是随机过程,而不是每一个随机数本身
对于上面的例子来说,这三次输出结果是通过设置随机数种子确定的,从设置随机数开始,相同的随机数种子后面随机的过程是固定的,第1个cell是随机过程输出的第1个结果,第2个cell是这个固定过程的第2个结果,以此类推。这3个cell输出了3个结果,可以理解成是当前种子下的随机过程输出的连续结果,这3个结果的顺序和数值是当前这个随机数种子决定的。因此,虽然每次生成的随机数结果不同,但是再运行一次这3个cell,生成的3个随机数还是与之前生成的随机数对应相等的,这就是随机数种子确定随机过程,而不是固定这个过程中每一个取值都相同。只要设置了相同的随机数,就会生成一个固定的随机过程,那么不管执行多少次过程,生成的这些随机数都是不变的,只不过每一次结果序列中的各个随机数并不保证一致。同时,随机结果与是否在Jupyter中运行并无关系,在.py文件中运行结果也相同,如下:
torch in py
可以看到,每次的结果并不相同,同时过程是固定的,与Jupyter中是一致的。

  • 33
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 49
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI码东道主

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值