7.3 其他分布的随机数生成 (简要介绍)


文档摘要

7.3 其他分布的随机数生成 (简要介绍) NumPy 随机数生成:7.3 其他分布的随机数生成 NumPy 的 模块提供了丰富的随机数生成功能,除了常见的均匀分布、正态分布等,还支持多种其他概率分布的随机数生成。 这些分布在模拟、统计分析、机器学习等领域都有广泛的应用。本节将简要介绍一些常用的其他分布,并提供相应的代码示例。 二项分布 (Binomial Distribution) 二项分布描述了在固定次数的独立试验中,成功的次数的概率分布,每次试验只有两种可能的结果(成功或失败),且每次试验成功的概率相同。 参数: : 试验次数。 : 每次试验成功的概率。 : 输出数组的形状。 函数: 示例: 可视化: 可以使用直方图来可视化二项分布的样本: 应用场景: 模拟抛硬币、计算产品合格率等。

7.3 其他分布的随机数生成 (简要介绍)

NumPy 随机数生成:7.3 其他分布的随机数生成

NumPy 的 np.random 模块提供了丰富的随机数生成功能,除了常见的均匀分布、正态分布等,还支持多种其他概率分布的随机数生成。 这些分布在模拟、统计分析、机器学习等领域都有广泛的应用。本节将简要介绍一些常用的其他分布,并提供相应的代码示例。

1. 二项分布 (Binomial Distribution)

二项分布描述了在固定次数的独立试验中,成功的次数的概率分布,每次试验只有两种可能的结果(成功或失败),且每次试验成功的概率相同。

  • 参数:

    • n: 试验次数。

    • p: 每次试验成功的概率。

    • size: 输出数组的形状。

  • 函数: np.random.binomial(n, p, size)

  • 示例:

import numpy as np n = 10 # 试验次数 p = 0.5 # 每次试验成功的概率 size = 1000 # 模拟次数 samples = np.random.binomial(n, p, size) print(f"模拟 {size} 次二项分布,每次试验 {n} 次,成功概率为 {p}:") print(samples[:20]) # 打印前20个样本

可视化:

可以使用直方图来可视化二项分布的样本:

import matplotlib.pyplot as plt plt.hist(samples, bins=20, density=True, alpha=0.7, color='skyblue') plt.xlabel("成功次数") plt.ylabel("概率密度") plt.title("二项分布直方图") plt.show()

应用场景: 模拟抛硬币、计算产品合格率等。

2. 泊松分布 (Poisson Distribution)

泊松分布描述了在固定时间或空间内,事件发生的次数的概率分布。它通常用于模拟稀有事件的发生。

  • 参数:

    • lam: 事件发生的平均速率(也称为 rate parameter)。

    • size: 输出数组的形状。

  • 函数: np.random.poisson(lam, size)

  • 示例:

import numpy as np lam = 5 # 平均每单位时间发生5次 size = 1000 samples = np.random.poisson(lam, size) print(f"模拟 {size} 次泊松分布,平均速率为 {lam}:") print(samples[:20])

可视化:

import matplotlib.pyplot as plt plt.hist(samples, bins=20, density=True, alpha=0.7, color='lightgreen') plt.xlabel("事件发生次数") plt.ylabel("概率密度") plt.title("泊松分布直方图") plt.show()

应用场景: 模拟网站访问量、电话呼叫次数、放射性衰变事件等。

3. 指数分布 (Exponential Distribution)

指数分布描述了事件之间的时间间隔的概率分布,通常与泊松过程相关联。

  • 参数:

    • scale: 平均时间间隔 (等于 1/lambda,其中 lambda 是泊松分布的速率参数)。

    • size: 输出数组的形状。

  • 函数: np.random.exponential(scale, size)

  • 示例:

import numpy as np scale = 2 # 平均时间间隔为 2 size = 1000 samples = np.random.exponential(scale, size) print(f"模拟 {size} 次指数分布,平均时间间隔为 {scale}:") print(samples[:20])

可视化:

import matplotlib.pyplot as plt plt.hist(samples, bins=50, density=True, alpha=0.7, color='lightcoral') plt.xlabel("时间间隔") plt.ylabel("概率密度") plt.title("指数分布直方图") plt.show()

应用场景: 模拟设备故障间隔时间、顾客到达服务台的时间间隔等。

4. Gamma 分布 (Gamma Distribution)

Gamma 分布是一种连续概率分布,与指数分布密切相关,可以看作是多个独立同分布的指数分布变量之和。

  • 参数:

    • shape: 形状参数 (k)。

    • scale: 尺度参数 (theta)。

    • size: 输出数组的形状。

  • 函数: np.random.gamma(shape, scale, size)

  • 示例:

import numpy as np shape = 2 # 形状参数 scale = 2 # 尺度参数 size = 1000 samples = np.random.gamma(shape, scale, size) print(f"模拟 {size} 次 Gamma 分布,形状参数为 {shape},尺度参数为 {scale}:") print(samples[:20])

可视化:

import matplotlib.pyplot as plt plt.hist(samples, bins=50, density=True, alpha=0.7, color='khaki') plt.xlabel("值") plt.ylabel("概率密度") plt.title("Gamma 分布直方图") plt.show()

应用场景: 模拟等待时间、保险索赔金额等。

5. 均匀分布 (Uniform Distribution)

虽然前面已经介绍过,但这里再次强调,np.random.uniform 可以生成指定范围内的均匀分布随机数。

  • 参数:

    • low: 下界 (包含)。

    • high: 上界 (不包含)。

    • size: 输出数组的形状。

  • 函数: np.random.uniform(low, high, size)

  • 示例:

import numpy as np low = 0 high = 10 size = 1000 samples = np.random.uniform(low, high, size) print(f"模拟 {size} 次均匀分布,范围为 [{low}, {high}):") print(samples[:20])

可视化:

import matplotlib.pyplot as plt plt.hist(samples, bins=50, density=True, alpha=0.7, color='plum') plt.xlabel("值") plt.ylabel("概率密度") plt.title("均匀分布直方图") plt.show()

应用场景: 模拟随机事件、密码生成等。

6. 正态分布 (Normal Distribution)

也称为高斯分布,是最常见的分布之一。

  • 参数:

    • loc: 均值 (mean)。

    • scale: 标准差 (standard deviation)。

    • size: 输出数组的形状。

  • 函数: np.random.normal(loc, scale, size)

  • 示例:

import numpy as np loc = 0 # 均值 scale = 1 # 标准差 size = 1000 samples = np.random.normal(loc, scale, size) print(f"模拟 {size} 次正态分布,均值为 {loc},标准差为 {scale}:") print(samples[:20])

可视化:

import matplotlib.pyplot as plt plt.hist(samples, bins=50, density=True, alpha=0.7, color='coral') plt.xlabel("值") plt.ylabel("概率密度") plt.title("正态分布直方图") plt.show()

应用场景: 模拟测量误差、金融数据等。

7. 其他分布

np.random 模块还提供了许多其他分布的随机数生成函数,例如:

  • np.random.chisquare(): 卡方分布

  • np.random.f(): F 分布

  • np.random.standard_t(): 标准 t 分布

  • np.random.weibull(): Weibull 分布

  • np.random.pareto(): Pareto 分布

这些分布在特定的统计分析和模拟场景中非常有用。

总结

NumPy 的 np.random 模块提供了强大的随机数生成功能,支持多种概率分布。 掌握这些分布的用法,可以方便地进行各种模拟、统计分析和机器学习任务。 选择合适的分布取决于你所要模拟的现象的特性。 例如,二项分布适合模拟独立重复试验,泊松分布适合模拟稀有事件,指数分布适合模拟事件间隔时间。

流程图 (Mermaid):

这个流程图展示了使用 NumPy 生成不同分布随机数的步骤。 首先选择合适的概率分布,然后使用 np.random 模块中相应的函数生成随机数,最后可以对生成的随机数进行可视化和分析。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U