首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> 關於C++

C++ 隨機數:常態分布(normal_distribution)詳解

     編輯:關於C++

常態分布

以平均值 mean 與標準差 stddev 為參數,機率密度函數為鐘形曲線。廣泛應用於自然現象模擬、金融建模、誤差分析等。

程式碼示範:繪製直方圖

#include <iostream>
#include <vector>
#include <random>
#include <algorithm>
#include <cmath>
using namespace std;

int main() {
    std::default_random_engine e;
    std::normal_distribution<double> n(4, 1.5); // mean=4, stddev=1.5
    std::vector<unsigned> vals(9); // 0..8 桶
    for (size_t i = 0; i != 200; ++i) {
        unsigned v = std::lround(n(e)); // 四捨五入到整數
        if (v < vals.size()) ++vals[v];
    }
    for (size_t j = 0; j != vals.size(); ++j)
        cout << j << " : " << vals[j]
             << string(vals[j], '*') << endl;
    int sum = accumulate(vals.begin(), vals.end(), 0);
    cout << "sum = " << sum << endl;
    return 0;
}

輸出範例

0 : 0
1 : 3 ***
2 : 15 ***************
3 : 40 ****************************************
4 : 64 ************************************************************
5 : 45 *********************************************
6 : 23 ***********************
7 : 9 *********
8 : 1 *
sum = 200

注意事項

  • normal_distribution 可能產生負值或超出預期範圍,使用時需邊界檢查。
  • 標準差 stddev 必須為非負數。
  • 引擎品質直接影響分布品質,生產環境建議使用 std::mt19937_64 搭配 std::random_device 種子。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved