1. 变换法概念

求逆法是基于概率积分反变换原则,是许多种离散分布中获取采样值的基本方法。

求逆法基本步骤如下:

(1)计算需要的随机变量X的概率分布函数F(X);

(2)在X的取值范围内,置F(X) = R。由于X是一个随机变量,因此R也是一个随机变量,可以证明,R是区间(0,1)上的均匀分布。

(3)解方程F(X)=R ,用R来表示X,即求F(X)的逆。

(4)已知(0,1)上均匀分布的随机数R1, R2, R3, R4, Ri … 根据Xi=FX-1(Ri)计算所要的随机变量。

2. 逆变换法证明

3. 指数分布随机数的生成方法

4. 指数分布示意图,如下(计:λ=1/β)

5. 函数程序(exponent.c)(关于uinform函数,请查看这里

/* 
*   beta — 双精度实型变量,指数分布的均值 
*   s    —长整型指针变量, *s随机数的种子
*/
#include <math.h>
#include "uniform.h"
 
double exponent( double beta, long int *s);
 
double exponent( double beta, long int *s)
{
    double u,x;
    u=uniform(0.0,1.0,s);
    x=-beta * log(u);
    return(x);
}

6. 例程:

产生50个均值为2、方差为4的指数分布随机数。

#include <stdio.h>
#include "exponent.h"
 
int main(void)
{
    int i,j;
    long int s;
    double x,beta;
    beta=2.0;
    s=13579;
    FILE *fp;   //存储最终计算值
    fp=fopen("data.dat","w");   //打开文本
    //计算数值
    for(i=0;i<10;i++)
    {
        for(j=0;j<5;j++)
        {
            x=exponent(beta,&s);    //调用逆分布函数
            printf("%13.7f",x);
            fprintf(fp,"%.7lf\n",x);    //存储数值
        }
        printf("\n");
    }
       fclose(fp);    //关闭文本
 
    return 0;
}

7. 生成的数值,如下:

8. 使用软件QtiPlot,进行直方图分析,如下:

下一篇:《数字信号的产生(5)-拉普拉斯分布随机》

注意:本站所有文章除特别说明外,均为原创,转载请务必以超链接方式并注明作者出处。 标签:处理算法,信号处理