数字信号的产生(4)-指数分布随机数
admin 于 2017年08月25日 发表在 机器学习笔记
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,进行直方图分析,如下: