為了方便各位同學更好的學習C++語言,武林小編特意為大家整理了一批資料,供大家交流學習,下面就跟隨武林技術頻道的編輯一起來看看C++如何實現正態隨機分布吧。
高斯分布也稱為正態分布(normal distribution)
常用的成熟的生成高斯分布隨機數序列的方法由Marsaglia和Bray在1964年提出,C++版本如下:
?
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++的內容,可以多多關注下武林技術頻道,我們會不斷的更新。
?
新聞熱點
疑難解答
圖片精選