数字信号的产生(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,进行直方图分析,如下:
