随机数分布
本章描述生成随机变量和计算其概率分布的函数。本章描述的分布样本可以使用库中的任意随机数生成器作为随机性的基础来源来获得。
在最简单的情况下,通过适当的变换,可以从随机数产生器的均匀分布解析得到非均匀分布。这个方法使用一次对随机数生成器的调用。更复杂的分布是由接受-拒绝方法产生的,该方法将期望的分布与相似的、解析已知的分布进行比较。这通常需要从生成器中提取几个样本。
本库还提供累积分布函数和逆累积分布函数,有时称为分位数函数。对于分布的上尾和下尾分别计算累积分布函数及其逆函数,允许对较小的结果保留完全的精度。
本章描述的随机变量函数和概率密度函数在gsl_randist.h中声明。相应的累积分布函数在gsl_cdf.h中声明。
注意:离散随机变量函数总是返回unsigned int类型的值,并且在大多数平台上它的最大值是
只有在参数的安全范围内(变量超过该范围的概率可以忽略不计)调用它们,以防止由于溢出而导致不正确的结果。
20.1 介绍
连续随机数分布由概率密度函数p(x)定义,使x在x 到 x + dx的无穷小范围内发生的概率为p(x)dx。
下尾部(左尾)P(x)的累积分布函数由积分定义,
给出了一个变量值小于x的概率。
上尾部(右尾)Q(x)的累积分布函数由积分定义,
给出了一个变量值大于x的概率。
上下累积分布函数的关系为P(x) + Q(x) = 1,且满足0≤P(x)≤1,0≤Q(x)≤1。
逆累积分布,x = P−1(P)和x = Q−1(Q)给出x的值对应于一个特定的P或Q值。它们可以被用来从概率值中找到置信限制。
对于离散分布,抽样整数值k的概率由p(k)给出,其中kp(k)=1。离散分布的下尾部P(k)的累积分布定义为:
这个和是在允许的分布范围内小于等于k。
离散分布Q(k)上尾的累积分布定义为
这两个定义满足等式P(k)+Q(k) = 1。如果分布的范围是1到n,那么P(n) = 1, Q(n) = 0,而P(1) = p(1), Q(1) = 1−p(1)。
20.2 高斯分布
double gsl_ran_gaussian(const gsl_rng * r, double sigma)
本函数返回一个高斯随机变量,均值为零,标准差为sigma。高斯随机变量的概率分布为:
x在负无穷到正无穷之间。对返回的数字使用转换z =µ+ x
gsl_ran_gaussian(),得到均值为µ的高斯分布。这个函数使用Box-Muller算法,需要调用两次随机数生成器r。
double gsl_ran_gaussian_pdf(double x, double sigma)
本函数计算概率密度p(x)在x的高斯分布,标准差为sigma。使用了上面给出的公式。