c++ 正态随机分布 C++实现正态随机分布的方法
人气:0想了解C++实现正态随机分布的方法的相关内容吗,在本文为您仔细讲解c++ 正态随机分布的相关知识和一些Code实例,欢迎阅读和指正,我们先划重点:c++,正态随机分布,下面大家一起来学习吧。
高斯分布也称为正态分布(normal distribution)
常用的成熟的生成高斯分布随机数序列的方法由Marsaglia和Bray在1964年提出,C++版本如下:
复制代码 代码如下:
#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;
}
加载全部内容