数字信号的产生(7)-对数正态分布随机数
admin 于 2017年08月29日 发表在 机器学习笔记
1. 对数正态分布:
当 μ = 0,δ = 0.1, 0.5, 1.0 曲线图:
2. 当 μ=0,δ=0.5 时,函数曲线如下:
3. 生成方法:
首先产生正态分布的随机变量y,然后通过变换产生对数正态分布的随机变量x,具体方法:
4. 函数说明(lognorm.h)(关于gauss函数,请查看这里)
#include <math.h> #include "gauss.h" double lognorm(double u, double sigma, long int *s); /* u —— 对数正态分布参数u sigma —— 对数正态分布的参数σ s —— *s为随机数的种子 */ double lognorm(double u, double sigma, long int *s) { double x,y; y=gauss(u,sigma,s); x=exp(y); return(x); }
5. 主函数实现(main.c):
#include <stdio.h> #include "lognorm.h" int main(void) { int i,j; long int s; double x,u,sigma; u=0.0; sigma=0.5; s=13579; FILE *fp; //存储最终计算值 fp=fopen("data.dat","w"); //打开文本 for(i=0;i<10;i++) { for(j=0;j<5;j++) { x=lognorm(u,sigma,&s); printf("%13.7f",x); fprintf(fp,"%.7f\n",x); //存储数值 } printf("\n"); } fclose(fp); //关闭文本 return 0; }
6. 执行结果:
7. 使用软件QtiPlot,进行直方图分析,如下: