在Matlab中将正态分布划分为等概率区域

Dividing a normal distribution into regions of equal probability in Matlab

考虑一个均值为 0,标准差为 1 的正态分布。我想将这个分布分成 9 个等概率区域,并从每个区域随机抽样。

听起来您想找到将概率分布函数下的区域划分为等概率段的值。这可以在 matlab 中通过应用 norminv 函数来完成。

在您的具体情况下:

segmentBounds = norminv(linspace(0,1,10),0,1)

segmentBounds 的任意两个相邻值现在描述了正态概率分布函数段的边界,使得每个段包含总概率的九分之一。

我不确定您所说的从每个样本中随机抽取数字是什么意思。一种方法是通过执行拒绝抽样从每个区域进行抽样。简而言之,对于由 x0x1 界定的每个区域,从 y = normrnd(0,1) 中抽取样本。如果x0 < y < x1,保留它。否则丢弃它并重复。

也有可能您打算从这些区域统一采样。为此,您可以尝试 rand(1)*(x1-x0) + x0。然而,这将对极端分位数产生问题,因为区域扩展到 +/- 无穷大。