数字信号的产生(14)-泊松分布随机数
admin 于 2017年09月18日 发表在 机器学习笔记
1. 泊松分布随机数
泊松分布概率函数为:
用P(λ)表示。泊松分布的均值为λ,方差为λ。
定理 若λ>0,x是整数,μi是(0,1)区间上均匀分布随机数,即μi ~ U(0,1),且有:
那么x是一个以λ为均值的泊松分布随机变量。
2. 泊松分布随机数算法
3. 函数说明(poisson.h)
#include <math.h> #include "uniform.h" int poisson(double lambda, long int *s); int poisson(double lambda, long int *s) { int i,x; double a,b,u; a=exp(-lambda); i=0; b=1.0; do { u=uniform(0.0,1.0,s); b*=u; i++; }while(b>=a); x=i-1; return(x); }
4. 主函数实现
#include <stdio.h> #include "poisson.h" int main(void) { int i,j,x; long int s; double n; n=4.0; s=13579; FILE *fp; //存储最终计算值 fp=fopen("data.dat","w"); //打开文本 // i,j参数设定正确 for(i=0;i<10;i++) { for(j=0;j<5;j++) { x=poisson(n,&s); printf("%11d",x); fprintf(fp,"%d\n",x); //存储数值 } printf("\n"); } fclose(fp); //关闭文本 return 0; }
5. 执行结果
6. 使用软件QtiPlot,绘制输出波形
7. 利用Python绘制理想分布