亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

C++ Random庫如何實現正態分布

c++
小樊
88
2024-07-21 03:10:58
欄目: 編程語言

C++的標準庫并沒有直接提供生成正態分布隨機數的函數,但可以通過一些數學庫來實現。一種常用的方法是使用Box-Muller算法來生成正態分布的隨機數。

Box-Muller算法的基本思想是利用兩個獨立的均勻分布隨機數來生成正態分布的隨機數。具體步驟如下:

  1. 生成兩個在0到1之間的均勻分布隨機數u和v。
  2. 計算兩個正態分布隨機數x和y:
    x = sqrt(-2 * log(u)) * cos(2 * PI * v)
    y = sqrt(-2 * log(u)) * sin(2 * PI * v)
    
    其中,log表示自然對數,sqrt表示平方根,cos和sin表示余弦和正弦,PI表示圓周率。
  3. x和y即為符合標準正態分布的隨機數,若需要生成具有特定均值和標準差的正態分布隨機數,則可以通過如下公式進行變換:
    z = mean + stddev * x
    
    其中,mean為均值,stddev為標準差。

以下是一個使用Box-Muller算法生成正態分布隨機數的示例代碼:

#include <iostream>
#include <cmath>
#include <cstdlib>

double generate_normal_random(double mean, double stddev) {
    double u = (double)rand() / RAND_MAX;
    double v = (double)rand() / RAND_MAX;
    
    double x = sqrt(-2 * log(u)) * cos(2 * M_PI * v);
    
    return mean + stddev * x;
}

int main() {
    srand(time(NULL));
    
    double mean = 0.0;
    double stddev = 1.0;
    
    for (int i = 0; i < 10; i++) {
        double random = generate_normal_random(mean, stddev);
        std::cout << random << std::endl;
    }
    
    return 0;
}

在上面的代碼中,我們定義了一個函數generate_normal_random來生成正態分布隨機數,然后在main函數中調用該函數來生成10個均值為0,標準差為1的正態分布隨機數。

0
竹山县| 贵南县| 溧水县| 贵港市| 南充市| 白朗县| 凤阳县| 山阴县| 永吉县| 阳东县| 耿马| 汉沽区| 洛宁县| 定安县| 闽侯县| 平度市| 东宁县| 漾濞| 小金县| 宜章县| 屏边| 怀集县| 南安市| 静宁县| 会东县| 府谷县| 凯里市| 临西县| 望都县| 鱼台县| 麻江县| 永和县| 康平县| 焉耆| 维西| 舒兰市| 平顺县| 彝良县| 都昌县| 江孜县| 柳州市|