说明:本blog基于python3版本, numpy 1.22.0
前言
numpy.random 模块弥补了python内置random模块的不足;从经验上讲,在生成大量随机数时,numpy.random的速度比python内置的random模块快一个数量级。
一、伪随机数及常用统计分布
伪随机数就是通过计算机模拟(stimulate)某种统计学分布而形成的样本值。
主要的numpy.random 方法有 :
-
设置全局随机种子(常见于神经网络的算法领域):numpy.random.seed(数值)
-
随机排列一个序列:numpy.random.shuffle()
-
模拟[0,1]的均匀分布,取连续样本: numpy.random.rand(size =int/tuple)
-
模拟均匀分布,取整数样本: numpy.random.randint(low= (the lowest value of boundary), high= ( the highest value of boundary,optional),size = int/tuple)
-
模拟二项分布,取样本: numpy.random.binomial(n = (n times trials),p= (the successful probability of each trials), size = int/tuple)
-
模拟均值为0,方差为1高斯分布, 取样本: numpy.random.randn(size =int/tuple)
-
模拟高斯分布,取样本: numpy.random.normal(loc = (mean value), scale = (standard variance), size =int/tuple)
-
模拟beta分布,取样本: numpy.random.beta(α=, β=, size=int/tuple)
Beta分布是参数分布的一种,取值范围为[0,1],常用来估计概率的分布;常见性质:mean = α/(α+β), variance = αβ/((α+β)^2 *(α+β+1));另外,beta分布是共轭先验的,也就是可以根据新的情况对原beta分布进行参数调整;
ref: beta性质 -
模拟卡方分布,取样本: numpy.random.chisquare(df = (自由度), size = int/tuple)
卡方分布是n个相互独立的,服从正态分布随机变量的平方和构成的新的变量;自由度就是真正独立变量的个数,自由度越大,图像越近似正态分布;
ref: 卡方分布 -
模拟gamma分布,取样本: numpy.random.gamma(shape =(形状参数), scale =, size=int/tuple)
ref:Gamma分布 -
模拟[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,以上就是伪随机数的生成过程,如果对你的学习有帮助,欢迎点赞收藏