np.random.RandomState(n)的用法

在网上搜索了半天,没几个能把这个函数说明白的。在此记录下自己的理解。

软件并不像大脑一样,可以给出一个真正的随机数;软件中产生的随机数也是软件开发者依据一定的算法规则、并基于随机数生成器种子产生的随机数,所以严格意义上来说,这些随机数并不是类似我们脱口而出的、真正意义上的随机数。

但算法产生的随机数有类似于真实随机数的统计学特征,如均匀性、独立性等;是能满足我们的使用需求的,所以称它为伪随机数。

在实际工作中,第一次产生随机数列a后,如果第二次还想产生与a相同的随机数列该怎么办呢?这就是np.random.RandomState(n)函数。

前面说过,随机数是基于种子产生的。举个列子来理解种子:我们把随机数比喻成农作物,种子就是玉米粒、大豆粒、高粱粒。种下玉米粒后,一定长玉米苗,而不是大豆苗;种下大豆粒,一定长大豆苗。。。因此,在随机数中,如果种子相同,那么长出来的随机数也就相同。

np.random.RandomState(n)中的n就是种子,n可以是0、3、233、4444等任意值,只要n相同,长出来的随机数就相同,如下图代码所示:

在这里插入图片描述

我们都知道,如今的玉米种子都是杂交种、一次性的,下次得买新的种子。随机数也有这个特点,具体看下面的代码:

在这里插入图片描述
变量a是我们用种子“23333”种出来的苗子,它只能结一个玉米棒子,这个棒子就是第一次调用“a.uniform(0,3,size=4)”产生的玉米棒array([1.56930077, 1.55489024, 1.75073785, 2.56603146])。之后,不管我们再调用多少次变量a,它都长不出跟原来一模一样的棒子,所以是一次性的。

其原理是,我们每产生一个随机数,都是用的新种子;即上图中
数组array([1.56930077, 1.55489024, 1.75073785, 2.56603146])用的是“23333”这个种子,而
数组array([0.98421335, 2.85821772, 2.20255567, 0.04649965])用的是新种子,虽然我们没用键盘输入,但当键盘输入为空时,python会自定义给它一个新种子。

  • 16
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值