2026a

# 使用均匀分布反演生成随机数

此示例说明如何使用均匀分布反演方法生成随机数。 当可以计算逆累积分布函数时,这对于分布很有用,但不支持直接从分布中采样。

# 步骤 1. 从标准均匀分布生成随机数。

使用 rand 从区间 (0,1) 上的均匀分布生成 1000 个随机数。

using TyPlot
using TyMath
using TyStatistics

rng = MT19937ar(5489);
u = rand(rng,1000);

反演方法依赖于连续累积分布函数 (cdfs) 在开区间 (0,1) 上均匀分布的原理。 如果 u 是 (0,1) 上的均匀随机数,则 从任何具有指定 cdf F 的连续分布中生成一个随机数 x。

# 步骤 2. 从 Weibull 分布生成随机数。

使用逆累积分布函数从带有参数 的 Weibull 分布生成随机数,这些随机数对应于 u 中的概率。 绘制结果。

x = wblinv(u,1,1);
histogram(x,20);

直方图显示使用 Weibull 逆 cdf 函数 wblinv 生成的随机数具有 Weibull 分布。

# 步骤 3. 从标准正态分布生成随机数。

u 中的相同值可以通过使用所需分布的逆 cdf 遵循相同的过程,从任何分布(例如标准正态分布)生成随机数。

figure()
x_norm = norminv(u,1,1);
histogram(x_norm,20)

直方图显示,通过使用标准正态逆 cdf norminv,从 u 生成的随机数现在具有标准正态分布。

# 另请参阅

wblinv | norminv | rand

# 相关主题