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