怎样产生标准分布或高斯分布的随机数?
2006-11-07 01:45
239 查看
怎样产生标准分布或高斯分布的随机数? 这里有一个由 Marsaglia 首创 Knuth 推荐的方法:
#include <stdlib.h> #include <math.h> double gaussrand() { static double V1, V2, S; static int phase = 0; double X; if(phase == 0) { do { double U1 = (double)rand() / RAND_MAX; double U2 = (double)rand() / RAND_MAX; V1 = 2 * U1 - 1; V2 = 2 * U2 - 1; S = V1 * V1 + V2 * V2; } while(S >= 1 || S == 0); X = V1 * sqrt(-2 * log(S) / S); } else X = V2 * sqrt(-2 * log(S) / S); phase = 1 - phase; return X; }
相关文章推荐
- 怎样产生标准分布或高斯分布的随机数?
- 怎样产生标准分布或高斯分布的随机数
- 产生特定分布的随机数(一):均匀分布和高斯分布
- C语言产生标准正态分布或高斯分布随机数
- 通过均匀分布随机数产生器获得一个高斯分布随机数产生器
- C语言/C++中怎样产生随机数
- C/C++怎样产生任意指定范围的随机数?
- C/C++中怎样产生随机数
- C/C++中怎样产生随机数
- C语言/C++怎样产生随机数:
- C++中如何产生均匀分布的随机数
- 任意分布的随机数的产生方法
- C语言/C++中怎样产生随机数
- 【MATLAB】高斯分布 均匀分布 以及其他分布 的随机数生成函数
- C语言/C++中怎样产生随机数
- 产生a到b之间均匀分布的随机数
- C++怎样产生任意指定范围的随机数
- 数字信号产生之均匀分布的随机数
- C语言/C++中怎样产生随机数
- 使用均匀分布随机数产生器构造任意分布的随机数产生器