python中的随机数种子seed()用法说明

 更新时间:2022年07月18日 16:45:20   作者:北木.  
这篇文章主要介绍了python中的随机数种子seed()用法说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

python随机数种子seed()

栗子1

import numpy as np
import random
random.seed(0)

np.random.seed(0)
print(np.random.rand(2))
print(np.random.rand(2))

结果为:

[0.5488135  0.71518937]
[0.60276338 0.54488318]

再次运行结果为:

[0.5488135  0.71518937]
[0.60276338 0.54488318]

想要在同一个程序中产生同一组随机数,需要在下一个函数设置一个相同的随机种子

import numpy as np
import random
random.seed(0)

np.random.seed(0)
print(np.random.rand(2))
np.random.seed(0)
print(np.random.rand(2))

结果为:

[0.5488135  0.71518937]
[0.5488135  0.71518937]

栗子2

import random
random.seed(0)

print("1: ", random.random())
# 生成同一个随机数
random.seed(0)
print("2: ", random.random())
print("3: ", random.random())
print("4: ", random.random())
# 生成同一个随机数
random.seed(0)
print("5: ", random.random())
print("6: ", random.random())
print("7: ", random.random())

结果为:

1:  0.8444218515250481
2:  0.8444218515250481
3:  0.7579544029403025
4:  0.420571580830845
5:  0.8444218515250481
6:  0.7579544029403025
7:  0.420571580830845

random.seed(0),其中的0是对应的随机数的种子,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。

生成的结果与代码运行的的次数没有什么关系。分析结果可知,输出值相同,与距离随机数种子间隔也相同。由以上分析可见,1,2,5相同;3,6相同;4、7相同。

随机种子的详解

什么是随机种子?

我们知道,随机数是通过一些复杂的数学算法得到的,那么 随机种子(Random Seed)就是这些随机数的初始值。

一般计算机里面产生的随机数都是伪随机数。 伪随机数,也是就一个一直不变的数。

import numpy as np
 
num = 0
while (num < 5):
    np.random.seed(0)
    print(np.random.rand(1,5)) # 得到一个范围从0到1的 1行5列的随机数
    num += 1
 
print('-------------------------')

结果:

由结果可以看出来,这些都是伪随机数,也就是一直不变的随机数,所以我们可以通过输入随机种子,得到一个初始固定的随机数。随机种子的初始值,是一直不变的。

我们把随机种子的赋值,放到循环外面,意思是只初始化一次

import numpy as np
 
num = 0
np.random.seed(0)
while (num < 5):
 
    print(np.random.rand(1,5))
    num += 1
 
print('-------------------------')

看到,结果就不一样了,但是初始化第一行的结果还是一样的,这说明初始值一样 ,而且你会发现,无论你运行多少遍,有了随机种子,运行的结果都是一样的

但我们不需要随机种子的时候,把随机种子的赋值注释掉

import numpy as np
 
num = 0
#np.random.seed(0)
while (num < 5):
 
    print(np.random.rand(1,5))
    num += 1
 
print('-------------------------')

第一次结果:

第二次结果:

第三次结果:

此时结果就是完全随机,没有一点章法。

所以我总结就是,通过随机种子,通过一些复杂的数学算法,你可以得到一组有规律的随机数,而随机种子就是这个随机数的初始值。随机种子相同,得到的随机数一定也相同。

随机种子计算随机数的计算方法

一般种子可以以当前的系统时间,这是完全随机的

算法1:平方取中法。

1)将种子设为X0,并mod 10000得到4位数

2)将它平方得到一个8位数(不足8位时前面补0)

3)取中间的4位数可得到下一个4位随机数X1

4)重复1-3步,即可产生多个随机数

这个算法的一个主要缺点是最终它会退化成0,不能继续产生随机数。

算法2:线性同余法

1)将种子设为X0,

2)用一个算法X(n+1)=(a*X(n)+b) mod c产生X(n+1)

一般将c取得很大,可产生0到c-1之间的伪随机数

该算法的一个缺点是会出现循环。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • python实现猜数字小游戏

    python实现猜数字小游戏

    这篇文章主要,具有一定的参考价值,感兴趣的小伙伴们可以参考一下介绍了Python实现猜数字小游戏,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Python基础教程之输入输出和运算符

    Python基础教程之输入输出和运算符

    这篇文章主要给大家介绍了关于Python基础教程之输入输出和运算符的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者使用Python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Python 利用高德地图api实现经纬度与地址的批量转换

    Python 利用高德地图api实现经纬度与地址的批量转换

    这篇文章主要介绍了Python 利用高德地图api实现经纬度与地址的批量转换,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Python数据分析numpy文本数据读取索引切片实例详解

    Python数据分析numpy文本数据读取索引切片实例详解

    这篇文章主要为大家介绍了Python数据分析numpy文本数据读取索引切片实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-08-08
  • python 中os模块os.path.exists()的用法说明

    python 中os模块os.path.exists()的用法说明

    这篇文章主要介绍了python 中os模块os.path.exists()的用法说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • 关于windos10环境下编译python3版pjsua库的问题

    关于windos10环境下编译python3版pjsua库的问题

    pjsua默认绑定的python版本是python 2.4,使用起来有诸多限制,希望可以使用python3调用pjsua的库实现软电话的基础功能。这篇文章主要介绍了windos10环境下编译python3版pjsua库,需要的朋友可以参考下
    2021-10-10
  • 对python插入数据库和生成插入sql的示例讲解

    对python插入数据库和生成插入sql的示例讲解

    今天小编就为大家分享一篇对python插入数据库和生成插入sql的示例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python正则实现提取电话功能

    python正则实现提取电话功能

    这篇文章主要为大家详细介绍了python正则实现提取电话功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-02-02
  • Python实现列表删除重复元素的三种常用方法分析

    Python实现列表删除重复元素的三种常用方法分析

    这篇文章主要介绍了Python实现列表删除重复元素的三种常用方法,结合实例形式对比分析了Python针对列表元素的遍历、判断、转换等相关操作技巧,需要的朋友可以参考下
    2017-11-11
  • python实现打砖块游戏

    python实现打砖块游戏

    这篇文章主要为大家详细介绍了Python实现打砖块游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-02-02

最新评论