拉普拉斯分布随机数的计算与《数字信号的产生(4)-指数分布随机数》中使用的方法一致,即:逆变换法。
1. 产生随机变量的组合方法


2. 产生拉普拉斯分布随机数方法
已知拉普拉斯分布的密度函数如下:

根据1中的组合算法,产生拉普拉斯分布随机数的方法为:

3. 密度函数曲线
当 β=1.5 时,密度函数曲线如下:

4. 函数说明(laplace.h)
关于uinform函数,请查看这里。
代码
#include <math.h> #include "uniform.h" double rayleigh(double sigma, long int *s); /* sigma —— 瑞利分布的参数σ */ double rayleigh(double sigma, long int *s) { double u,x; u=uniform(0.0,1.0,s); x=-2.0*log(u); x=sigma *sqrt(x); return(x); }
5. 主函数实现
main.c 内容如下:
代码
#include <stdio.h> #include "laplace.h" int main(void) { int i,j; long int s; double x,beta; beta=1.5; s=13579; FILE *fp; //存储最终计算值 fp=fopen("data.dat","w"); //打开文本 for(i=0;i<10;i++) { for(j=0;j<5;j++) { x=laplace(beta,&s); printf("%13.7f",x); fprintf(fp,"%.7lf\n",x); //存储数值 } printf("\n"); } fclose(fp); //关闭文本 return 0; }
6. 执行结果

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