Numpy常见方法(8)-伪随机数的生成

说明:本blog基于python3版本, numpy 1.22.0


前言

numpy.random 模块弥补了python内置random模块的不足;从经验上讲,在生成大量随机数时,numpy.random的速度比python内置的random模块快一个数量级

一、伪随机数及常用统计分布

伪随机数就是通过计算机模拟(stimulate)某种统计学分布而形成的样本值

主要的numpy.random 方法有 :

  1. 设置全局随机种子(常见于神经网络的算法领域):numpy.random.seed(数值)

  2. 随机排列一个序列:numpy.random.shuffle()

  3. 模拟[0,1]的均匀分布,取连续样本: numpy.random.rand(size =int/tuple)

  4. 模拟均匀分布,取整数样本: numpy.random.randint(low= (the lowest value of boundary), high= ( the highest value of boundary,optional),size = int/tuple)

  5. 模拟二项分布,取样本: numpy.random.binomial(n = (n times trials),p= (the successful probability of each trials), size = int/tuple)

  6. 模拟均值为0,方差为1高斯分布, 取样本: numpy.random.randn(size =int/tuple)

  7. 模拟高斯分布,取样本: numpy.random.normal(loc = (mean value), scale = (standard variance), size =int/tuple)

  8. 模拟beta分布,取样本: numpy.random.beta(α=, β=, size=int/tuple)

    Beta分布是参数分布的一种,取值范围为[0,1],常用来估计概率的分布;常见性质:mean = α/(α+β), variance = αβ/((α+β)^2 *(α+β+1));另外,beta分布是共轭先验的,也就是可以根据新的情况对原beta分布进行参数调整;
    ref: beta性质

  9. 模拟卡方分布,取样本: numpy.random.chisquare(df = (自由度), size = int/tuple)
    卡方分布是n个相互独立的,服从正态分布随机变量的平方和构成的新的变量;自由度就是真正独立变量的个数,自由度越大,图像越近似正态分布;
    ref: 卡方分布

  10. 模拟gamma分布,取样本: numpy.random.gamma(shape =(形状参数), scale =, size=int/tuple)
    ref:Gamma分布

  11. 模拟[0,1)均匀分布, 取样本: numpy.random.uniform(size=int/tuple)

    方法3-11的返回值为size大小的矩阵,ndarray类型。

二、应用实例

假设我们想生成一个均值为10,标准差为2的高斯分布样本,样本大小为4*5的二维数组,我们可以执行如下代码

import numpy as np
a = np.random.normal(10, 2, size= (4,5))
print(a)

结果如下,

[[ 7.0354543   8.45378602  8.94383969  9.2592351   8.3168083 ]
 [10.94871767 12.29315645  8.18438652 10.21589816  6.42074041]
 [13.31545203  7.78263916 13.45948871 12.76962707  7.20060776]
 [13.65439416 10.7152851  11.83459031 10.93631277  5.85551996]]

如果,我想每次都得到一样的伪随机数,我可以设置随机种子

import numpy as np
np.random.seed(1)
a = np.random.normal(10, 2, size= (4,5))
print(a)

结果如下,

[[13.24869073  8.77648717  8.9436565   7.85406276 11.73081526]
 [ 5.39692261 13.48962353  8.4775862  10.63807819  9.50125925]
 [12.92421587  5.87971858  9.35516559  9.23189129 12.26753888]
 [ 7.80021747  9.65514358  8.24428316 10.08442749 11.16563043]]

OK,以上就是伪随机数的生成过程,如果对你的学习有帮助,欢迎点赞收藏

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Efred.D

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

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

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

打赏作者

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

抵扣说明:

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

余额充值