我是zoro
分类: LINUX
2013-02-06 14:20:14
转自:
本文介绍如何使用GNU科学计算库GSL(GNU Scientific Library)产生正态分布(高斯分布)、柯西分布和Levy分布的随机数。本文程序都在Linux下用GCC4.5编译通过。编译时请使用命令: gcc -Wall test.c -o -lgsl -lgslcblas test。并将你的/usr/local/lib/目录设置到库搜索路径中。
接,继续。
默认的,GSL用Box-Muller方法产生满足正态分布的随机数。下面是一般会用到的函数。
Function 2.1 double gsl_ran_gaussian(const gsl_rng *r, double sigma)
函数返回期望(均值 μ)为 0 ,标准差为 sigma (σ) 的正态分布随机数。
Function 2.2 double gsl_ran_gaussian_pdf (double x, double sigma)
计算 x 处的概率密度值。
Function 2.3 double gsl_ran_ugaussian (const gsl_rng *r)
标准正态分布函数,与 Function 2.1 中的sigma=1时等价。
Function 2.4 double gsl_ran_ugaussian_pdf (double x)
返回标准正态分布的x处的概率密度函数值。
例子程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
#include |
运行结果:
-1.55713
0.85295
-0.67320
-1.37006
1.21462
gaussian_pdf(0.0)=0.39894
gaussian_pdf(1.0)=0.24197
gaussian_pdf(-1.0)=0.24197
一篇文章提到过,柯西分布也是的一个特例,是当特性指数 α=1,偏度参数 β=0 时的稳定分布。所以对于柯西分布只有一个尺度因子 c 需要人工设定。
Function 3.1 double gsl_ran_cauchy(const gsl_rng *r, double a)
参数a就是尺度因子,函数返回满足柯西分布的随机数。
Function 3.2 double gsl_ran_cauchy_pdf(double x, double a)
返回x处的概率密度函数值。
例子程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
#include |
运行结果:
scale parameter a=1.0
-0.44757
-0.12089
-2.67688
-1.61293
0.11825
cauchy_pdf(0.0, 1.0)=0.31831
cauchy_pdf(1.0, 1.0)=0.15915
cauchy_pdf(-1.0, 1.0)=0.15915
声明:文章未经说明都是原创,转载请注明: 转载自
本文链接地址: