随机数种子np.random.seed()

该函数是为了生成一组固定的随机数,这个随机数可以理解为是个无限长的数组,其中np.random.seed()需要设置一个参数,可以将这个参数理解为指定的seed(就是他的编号)。
例如:np.random.seed(10),就表示使用的是第十号种组,也可以使用不同的标号,这个参数相当于给你的随机数数组起了个名字,当你想要使用某一组时,输入其标号即可。下面举例说明:

import numpy as np
for i in range(1,3):
	print(i)
    np.random.seed(1)
    a = np.random.rand(2,3)
    print(a)

#######################################
#结果如下
1
[[4.17022005e-01 7.20324493e-01 1.14374817e-04]
 [3.02332573e-01 1.46755891e-01 9.23385948e-02]]
2
[[4.17022005e-01 7.20324493e-01 1.14374817e-04]
 [3.02332573e-01 1.46755891e-01 9.23385948e-02]]

可以看到,两次生成的随机数组是一样的,应为使用的是同一组随机数。

for i in range(1,3):
	print(i)
    np.random.seed(i)
    a = np.random.rand(2,3)
    print(a)

#######################################
#结果如下
1
[[4.17022005e-01 7.20324493e-01 1.14374817e-04]
 [3.02332573e-01 1.46755891e-01 9.23385948e-02]]
2
[[0.4359949  0.02592623 0.54966248]
 [0.43532239 0.4203678  0.33033482]]

可以观察到这里第一次生成的随机数组与上面的还是一致的,说明这个种子数组是固定的,即seed(1)就是固定的,同理其他标号的随机数种子数组也是固定的。
我在不同的程序文件下使用同一序号的种子,发现生成的结果相同,将程序关闭重启还是一样,所以我觉得,种子序号的结果是固定的?(跟电脑有关?希望有懂的大神可以解答一下)

### Python `random.seed` 和 NumPy `np.random.seed` 的区别及用法 #### Python内置模块中的随机种子设置 在Python的标准库中,`random.seed()`用于初始化伪随机数生成器的状态。这使得每次运行程序时可以得到相同的随机序列,只要提供了相同的种子值。 ```python import random random.seed(42) # 设置种子为42 print(random.randint(0, 10)) ``` 此方法影响的是整个Python环境中基于`random`模块产生的所有类型的随机数值,包括整数、浮点数以及从列表或其他容器类型中抽取元素的操作[^3]。 #### 使用NumPy进行随机种子设定 对于NumPy而言,`np.random.seed()`同样用来控制随机数生成过程中的可重复性。然而,它仅作用于由NumPy提供的函数所创建的随机数组或单个随机数上。 ```python import numpy as np np.random.seed(42) # 设定NumPy的随机种子也为42 print(np.random.rand()) # 输出介于[0., 1.)之间的均匀分布随机样本 ``` 值得注意的是,在较新的版本中,推荐使用更灵活的方式通过`Generator`对象来管理状态: ```python rng = np.random.default_rng(seed=42) print(rng.uniform()) ``` 这种方式不仅限定了范围内的随机数生成,还支持更多种类的概率分布采样功能,并且具有更好的线程安全性特性[^1]。 当在同一项目里同时调用了来自不同包下的随机操作(比如既有纯Python也有NumPy),则需要分别针对各自使用的库单独指定相应的seed参数以确保结果的一致性和再现性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

喝鸡汤

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

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

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

打赏作者

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

抵扣说明:

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

余额充值