数字信号的产生(8)-柯西分布随机数
admin 于 2017年08月30日 发表在 机器学习笔记
柯西分布随机数的计算与《数字信号的产生(4)-指数分布随机数》中使用的方法一致,即:逆变换法。
1. 柯西分布
2. 当 μ=0,β=1.0,m=1.0 时,曲线如下:
3. 生成方法
4. 函数说明(cauchy.h)(关于uinform函数,请查看这里)
#ifndef CAUCHY_H #define CAUCHY_H #include <math.h> #include "uniform.h" double cauchy(double a, double b, long int *s); /* a —— 柯西分布的参数α b —— 柯西分布的参数β s —— *s为随机数的种子 */ double cauchy(double a, double b, long int *s) { double u,x; u=uniform(0.0,1.0,s); x=a-b/tan(3.1415926*u); return(x); } #endif
5. 主函数实现(main.c)
#include <stdio.h> #include "cauchy.h" int main(void) { int i,j; long int s; double x, alpha, beta; alpha=1.0; beta=1.0; s=13579; FILE *fp; //存储最终计算值 fp=fopen("data.dat","w"); //打开文本 for(i=0;i<10;i++) { for(j=0;j<5;j++) { x=cauchy(alpha,beta,&s); printf("%13.7f",x); fprintf(fp,"%.7f\n",x); //存储数值 } printf("\n"); } fclose(fp); //关闭文本 return 0; }
6. 执行结果
7. 使用软件QtiPlot,进行直方图分析,如下: