NumPy 的 numpy.random 模块提供了丰富的随机数生成函数,覆盖基础随机数组、概率分布抽样和随机排列等功能。以下是常用函数的详细解析:
一、基础随机数生成函数
1. np.random.rand(d0, d1, ..., dn)
- 功能:生成 [0, 1) 均匀分布的随机浮点数数组
- 参数:
d0, d1...为数组维度(整数) - 示例:
np.random.rand(2, 3) # 生成 2行3列的随机数组 # 输出:array([[0.12, 0.34, 0.56], [0.78, 0.90, 0.23]])
2. np.random.randn(d0, d1, ..., dn)
- 功能:生成符合标准正态分布(μ=0, σ=1)的随机数
- 参数:同
rand() - 示例:
np.random.randn(2) # 生成2个标准正态分布随机数 # 输出:array([-0.45, 1.23])
3. np.random.randint(low, high=None, size=None, dtype=int)
- 功能:生成 [low, high) 区间的整数随机数
- 参数:
low:下限(包含)high:上限(不包含,若未提供则从0开始)size:输出形状
- 示例:
np.random.randint(1, 10, size=(3,)) # 生成3个1-9的整数 # 输出:array([5, 2, 8])
4. np.random.random(size=None)
- 功能:生成 [0.0, 1.0) 均匀分布的随机浮点数(单个数或数组)
- 示例:
np.random.random((2,2)) # 2x2随机矩阵 # 输出:array([[0.45, 0.78], [0.12, 0.90]])
二、概率分布抽样函数
1. np.random.uniform(low=0.0, high=1.0, size=None)
- 功能:生成指定区间 [low, high) 的均匀分布随机数
- 示例:
np.random.uniform(-1, 1, size=3) # 3个[-1,1)的均匀分布数 # 输出:array([-0.23, 0.56, -0.89])
2. np.random.normal(loc=0.0, scale=1.0, size=None)
- 功能:生成指定均值(loc)和标准差(scale)的正态分布
- 示例:
np.random.normal(loc=5, scale=2, size=2) # N(5, 2²)的2个样本 # 输出:array([4.89, 6.12])
3. np.random.binomial(n, p, size=None)
- 功能:生成二项分布(n次试验,成功概率p)的随机数
- 示例:
np.random.binomial(n=10, p=0.5, size=3) # 3次10重伯努利试验的成功次数 # 输出:array([5, 7, 4])
4. np.random.poisson(lam=1.0, size=None)
- 功能:生成泊松分布(λ=lam)的随机数
- 示例:
np.random.poisson(lam=3, size=4) # λ=3的4个泊松样本 # 输出:array([2, 4, 3, 5])
三、随机抽样与排列
1. np.random.choice(a, size=None, replace=True, p=None)
- 功能:从序列
a中随机抽样 - 参数:
replace:是否允许重复抽样(默认True)p:各元素抽样概率(需与a长度相同)
- 示例:
np.random.choice([1,2,3,4], size=3, p=[0.1,0.2,0.3,0.4]) # 按概率抽样3个元素,输出:array([3,4,4])
2. np.random.shuffle(x)
- 功能:原地打乱数组x(修改原数组)
- 示例:
arr = np.array([1,2,3,4]) np.random.shuffle(arr) # arr变为 [3,1,4,2]
3. np.random.permutation(x)
- 功能:生成数组x的随机排列(不修改原数组)
- 示例:
np.random.permutation([1,2,3,4]) # 输出:array([2,4,1,3])
四、随机种子设置
np.random.seed(42) # 设置随机种子,保证结果可复现
np.random.rand(2) # 每次运行结果相同:array([0.37, 0.95])
关键区别总结
| 函数组 | 核心特点 | 典型应用场景 |
|---|---|---|
rand/randn | 无需参数直接指定维度,快捷生成数组 | 快速创建随机矩阵 |
uniform/normal | 可自定义分布参数(区间/均值等) | 模拟特定概率分布的数据 |
choice/shuffle | 针对序列的抽样与重排 | 随机选样、打乱数据顺序 |
NumPy随机数函数详解
6164

被折叠的 条评论
为什么被折叠?



