NumPy 提供了强大的功能来生成各种概率分布的随机数,这对于统计建模、蒙特卡洛模拟、机器学习算法的测试等场景非常有用。以下是一些快速生成特定分布随机数的小技巧:
1. 均匀分布随机数
生成在指定范围内的均匀分布随机数。
Python1import numpy as np
2
3# 生成 10 个在 0 到 1 之间的均匀分布随机数
4uniform_randoms = np.random.rand(10)
5print(uniform_randoms)
6
7# 生成 10 个在指定区间 [a, b) 内的均匀分布随机数,例如 [-1, 1)
8a, b = -1, 1
9uniform_custom_range = np.random.uniform(a, b, 10)
10print(uniform_custom_range)
2. 正态分布随机数
生成符合正态分布(高斯分布)的随机数。
Python1# 生成 10 个均值为 0,标准差为 1 的正态分布随机数
2normal_randoms = np.random.randn(10)
3print(normal_randoms)
4
5# 生成指定均值和标准差的正态分布随机数
6mu, sigma = 5, 2
7normal_custom_params = np.random.normal(mu, sigma, 10)
8print(normal_custom_params)
3. 二项分布随机数
模拟一系列独立的伯努利试验(成功/失败)的结果。
Python1# 生成 10 次试验,每次试验成功概率为 0.3 的二项分布随机数
2n, p = 10, 0.3
3binomial_randoms = np.random.binomial(n, p, 10)
4print(binomial_randoms)
4. 泊松分布随机数
模拟在给定时间/空间段内发生固定次数事件的概率。
Python1# 生成 10 个平均值为 5 的泊松分布随机数
2lam = 5
3poisson_randoms = np.random.poisson(lam, 10)
4print(poisson_randoms)
5. 伽马分布随机数
伽马分布常用于模型等待时间、保险索赔金额等。
Python1# 生成 10 个形状参数为 2,尺度参数为 2 的伽马分布随机数
2shape, scale = 2., 2.
3gamma_randoms = np.random.gamma(shape, scale, 10)
4print(gamma_randoms)
6. 指数分布随机数
指数分布通常用于表示独立随机事件之间的时间间隔。
Python1# 生成 10 个率参数为 0.5 的指数分布随机数
2scale = 0.5
3exponential_randoms = np.random.exponential(scale, 10)
4print(exponential_randoms)
通过上述示例,你可以看到 NumPy 提供了丰富的接口来生成不同分布的随机数,这对于实验设计、数据分析及仿真模拟等领域非常有帮助。