在数据分析、统计模拟以及机器学习中,经常需要生成随机数。例如:
• 生成随机样本
• 构造模拟数据
• 初始化模型参数
• 实现随机抽样
NumPy 提供了一组用于随机数生成(random number generation)的函数,可以生成多种概率分布的数据。这些函数主要集中在 numpy.random 模块中。
需要说明的是,从 NumPy 1.17 开始,官方推荐使用新的随机数生成体系()。本文介绍的 numpy.random.* 函数属于传统随机数接口(legacy API),但由于其在大量代码与教材中仍被广泛使用,因此仍具有重要学习价值。
按照功能划分,NumPy 的随机数函数通常可以分为五类:
(1)随机数生成器控制
(2)均匀分布随机数
(3)整数随机数
(4)随机抽样与排列
(5)常见概率分布
一、随机数生成器控制
在进行随机数计算时,经常需要固定随机数序列,以便实验结果可以复现。
seed()
设置随机数种子(Random Seed)。
numpy.random.seed(seed)参数说明:
• seed:整数种子值
示例:
np.random.rand(3)输出示例:
[0.37454012 0.95071431 0.73199394]说明:设置相同的 seed,在相同的 NumPy 版本与实现下通常可以复现相同的随机序列。
二、均匀分布随机数
均匀分布(Uniform Distribution)是最常见的随机数类型。
NumPy 中部分函数名称并未直接体现 “uniform”,例如 rand() 与 random(),但它们本质上都生成 [0,1) 区间的均匀分布随机数。
rand()
生成 [0, 1) 区间的均匀分布随机数。
numpy.random.rand(d0, d1, ..., dn)参数说明:
• d0, d1, ...:输出数组的形状
示例:
np.random.rand(2,3)输出示例:
[0.44 0.32 0.77]]说明:返回值范围为 0 ≤ x < 1。
random()
生成 [0,1) 区间的均匀分布随机数。
numpy.random.random(size=None)参数说明:
• size:输出数组形状
示例:
np.random.random((2,3))uniform()
生成指定区间的均匀分布随机数。
numpy.random.uniform(low=0.0, high=1.0, size=None)参数说明:
• low:最小值(包含)
• high:最大值(通常不包含)
• size:输出数组形状
示例:
np.random.uniform(10, 20, size=5)输出示例:
[13.4 17.1 10.8 19.2 15.6]三、整数随机数
NumPy 还可以生成随机整数。
randint()
生成指定范围的随机整数。
numpy.random.randint(low, high=None, size=None, dtype=int)参数说明:
• low:最小值(包含)
• high:最大值(不包含)
• size:输出数组形状
• dtype:输出整数的数据类型
示例:
np.random.randint(0, 10, size=5)输出示例:
[3 7 1 9 0]说明:生成范围为 low ≤ x < high。
四、随机抽样与排列
NumPy 提供了一组函数,用于随机抽样和随机排列。
choice()
从数组中随机选择元素。
numpy.random.choice(a, size=None, replace=True, p=None)参数说明:
• a:数组或整数;若为整数 n,则表示从 0~n-1 中选择
• size:抽样数量
• replace:是否允许重复抽样
• p:概率分布,应与 a 的长度一致,且概率和为 1
示例:
np.random.choice([10,20,30,40], size=3)输出示例:
[20 40 10]permutation()
生成随机排列。
numpy.random.permutation(x)参数说明:
• x:整数或数组
如果 x 为数组,则返回数组元素的随机排列。示例:
np.random.permutation(5)输出示例:
[3 0 4 1 2]shuffle()
原地打乱数组顺序。
numpy.random.shuffle(x)参数说明:
• x:输入数组
示例:
print(a)说明:shuffle() 会直接修改原数组。对多维数组,shuffle() 只会打乱第一轴(行顺序)。
五、常见概率分布
NumPy 可以生成多种概率分布数据。
normal()
生成正态分布随机数(Normal Distribution)。
numpy.random.normal(loc=0.0, scale=1.0, size=None)参数说明:
• loc:均值
• scale:标准差
• size:输出数组形状
示例:
np.random.normal(0, 1, size=5)说明:默认参数时生成标准正态分布。标准正态分布常用于描述自然随机误差、统计推断以及机器学习中的数据标准化与随机初始。
binomial()
生成二项分布随机数。
numpy.random.binomial(n, p, size=None)参数说明:
• n:试验次数
• p:成功概率
• size:输出数组形状
示例:
np.random.binomial(10, 0.5, size=5)说明:二项分布常用于描述 n 次独立试验中的成功次数。
poisson()
生成泊松分布随机数。
numpy.random.poisson(lam=1.0, size=None)参数说明:
• lam:平均发生次数
• size:输出数组形状
示例:
np.random.poisson(3, size=5)说明:泊松分布常用于描述单位时间或单位空间内事件发生次数。
exponential()
生成指数分布随机数。
numpy.random.exponential(scale=1.0, size=None)参数说明:
• scale:尺度参数
• size:输出数组形状
示例:
np.random.exponential(1.0, size=5)说明:指数分布常用于描述事件发生之间的时间间隔。
gamma()
生成 Gamma 分布随机数。
numpy.random.gamma(shape, scale=1.0, size=None)参数说明:
• shape:形状参数
• scale:尺度参数
• size:输出数组形状
示例:
np.random.gamma(2.0, 2.0, size=5)说明:Gamma 分布常用于描述等待时间、事件累计时间以及作为贝叶斯统计中的先验分布。
beta()
生成 Beta 分布随机数。
numpy.random.beta(a, b, size=None)参数说明:
• a:形状参数 α
• b:形状参数 β
• size:输出数组形状
示例:
np.random.beta(2, 5, size=5)说明:Beta 分布常用于概率建模与贝叶斯统计。
chisquare()
生成卡方分布随机数。
numpy.random.chisquare(df, size=None)参数说明:
• df:自由度
• size:输出数组形状
示例:
np.random.chisquare(3, size=5)说明:卡方分布常用于统计检验与方差分析。
lognormal()
生成对数正态分布随机数。
numpy.random.lognormal(mean=0.0, sigma=1.0, size=None)参数说明:
• mean:对数均值
• sigma:对数标准差
• size:输出数组形状
示例:
np.random.lognormal(0, 1, size=5)说明:若变量的对数服从正态分布,则该变量服从对数正态分布。
小结
NumPy 在 numpy.random 模块中提供了一套传统随机数生成函数体系,包括均匀分布随机数(rand、uniform)、随机整数(randint)、随机抽样与排列(choice、permutation、shuffle),以及多种概率分布(如 normal、binomial、poisson、gamma、beta、chisquare、lognormal 等)。这些函数构成了 NumPy 在统计模拟、数据分析与机器学习实验中的基础工具。
“点赞有美意,赞赏是鼓励”
热门跟贴