欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++ normal_distribution高斯正態(tài)分布函數(shù)的用法示例

 更新時(shí)間:2021年07月15日 15:48:23   作者:c語言中文網(wǎng)  
高斯分布也稱為正態(tài)分布(normal distribution),常用的成熟的生成高斯分布隨機(jī)數(shù)序列的方法由Marsaglia和Bray在1964年提出,這篇文章主要給大家介紹了關(guān)于C++ normal_distribution高斯正態(tài)分布函數(shù)用法的相關(guān)資料,需要的朋友可以參考下

圖 1 顯示的是正態(tài)(或高斯)分布。它是一條連續(xù)的貝爾曲線,期望兩邊的值是相等的,可以理解為期望就是平均值。它是一個(gè)概率分布,因此曲線下方的面積是1。正態(tài)分布是由兩個(gè)參數(shù)完全定義的:期望和標(biāo)準(zhǔn)差,它們是衡量期望兩邊的值如何分布的一種方式。


圖 1 正態(tài)分布

期望和標(biāo)準(zhǔn)差分別是用希臘字母 μ 和 σ 來表示的,變量 x 有 n 個(gè)樣本,這些是由下面的公式定義的:

因此,期望就是值的和除以值的個(gè)數(shù)一換句話說,也就是平均值。可以通過值和期望的差值的平方子和除以 n-1,然后對(duì)結(jié)果開方來得到標(biāo)準(zhǔn)差。對(duì)于不同的期望和標(biāo)準(zhǔn)差的值,正態(tài)分布的相對(duì)寬度和高度分布曲線的變化是相當(dāng)大的。但是,分布值總是如圖 1 所示。這意味著,如果知道一個(gè)符合正態(tài)分布的變量的期望和標(biāo)準(zhǔn)差,例如在大量人口中個(gè)體的身高,就可以知道 95% 的人身高不超過期望的 2σ。標(biāo)準(zhǔn)正態(tài)分布的期望為 0,標(biāo)準(zhǔn)差為 1。

uniform_distribution 模板定義了可以產(chǎn)生隨機(jī)浮點(diǎn)值的分布對(duì)象類型,默認(rèn)是 double 類型。默認(rèn)構(gòu)造函數(shù)創(chuàng)建的是標(biāo)準(zhǔn)正態(tài)分布,因此期望是 0,方差是 1.0:

std::normal_distribution<> dist; // mu: 0 sigma: 1

下面展示了如何創(chuàng)建一個(gè)有特定值和標(biāo)準(zhǔn)差的正態(tài)分布:

double mu {50.0}, sigma {10.0};
std::normal_distribution<> norm {mu, sigma};

這里定義了一個(gè)生成 double 值的分布對(duì)象,期望為 50.0,標(biāo)準(zhǔn)差是 10.0。為了生成值,可以將一個(gè)隨機(jī)數(shù)生成器傳給 norm 函數(shù)對(duì)象。例如:

std::random_device rd;
std::default_random_engine rng {rd()};
std::cout << "Normally distributed values: "<< norm (rng) << " " << norm (rng) << std::endl; // 39.6153 45.5608

可以通過調(diào)用對(duì)象的成員函數(shù) mean() 和 stddev() 來獲取它的期望值和標(biāo)準(zhǔn)差:

std::cout<<"mu: "<< norm.mean () << " sigma: " << norm.stddev ()<< std::endl; // mu: 50 sigma: 10

通過調(diào)用無參數(shù)的成員函數(shù) param(),可以得到一個(gè)封裝了這兩個(gè)值的 param_type 對(duì)象。為了設(shè)置期望或標(biāo)準(zhǔn)差,需要將一個(gè) param_type 對(duì)象傳給成員函數(shù) Pamm()。分布類有用來獲取期望和標(biāo)準(zhǔn)差的成員,param_type 對(duì)象擁有和它們的名字相同的成員函數(shù)。下 面是一個(gè)示例:

using Params = std::normal_distribution<>::param_type; // Type alias for readability
double mu {50.0}, sigma {10.0};
std::normal_distribution<> norm {mu, sigma};// Create distribution
auto params = norm.param(); // Get mean and standard deviation
norm.param(Params {params.mean(),params.stddev() + 5.0}); // Modify params
std::cout << "mu: "<< norm.mean() << " sigma: " << norm.stddev ()<< std::endl; // mu: 50 sigma: 15

這里調(diào)用無參數(shù)的 param() 來獲取包含期望和方差的 param_type 對(duì)象。在第二個(gè) param() 調(diào)用中,通過傳入一個(gè) Pams 對(duì)象將標(biāo)準(zhǔn)差增加了 5.0。

可以通過傳入一個(gè) param_type 對(duì)象作為一個(gè)分布對(duì)象調(diào)用的第二個(gè)參數(shù)來臨時(shí)設(shè)置期望和標(biāo)準(zhǔn)差:

using Params = std::normal_distribution<>::param_type; // Type alias for readability
std::random_device rd;
std::default_random_engine rng {rd()};
std::normal_distribution<> norm {50.0, 10.0}; // Create distribution
Params new_p {100.0, 30.0};// mu=100 sigma=30
std::cout << norm(rng, new_p) << std::endl; // Generate value with new_p: 100.925
std::cout << norm,mean() << " " << norm.stddev()<< std::endl;// 50 10

new_p 定義的期望和標(biāo)準(zhǔn)差只會(huì)被應(yīng)用到它被作為第二個(gè)參數(shù)傳入的 norm 的執(zhí)行中。原始的期望和標(biāo)準(zhǔn)差會(huì)被應(yīng)用到隨后的沒有第二個(gè)參數(shù)的 norm 調(diào)用中。

成員函數(shù) min() 和 max() 返回的是分布可以產(chǎn)生的最小值和最大值。對(duì)于分布來說,這并不是特別有用。因?yàn)榉祷刂档念愋涂梢赃@樣表示最大值和最小值:

std::cout << "min: " << norm.min () << " max: " << norm.max ()<< std::endl; // min:4.94066e-324 max: 1.7 9769e+308

總結(jié)

到此這篇關(guān)于C++ normal_distribution高斯正態(tài)分布函數(shù)的文章就介紹到這了,更多相關(guān)C++ normal_distribution高斯正態(tài)分布函數(shù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C++文件讀取的4種情況匯總

    C++文件讀取的4種情況匯總

    前幾天要用到C++讀取文本文件,就學(xué)習(xí)了一下幾種不同的讀取方法,下面這篇文章主要給大家介紹了關(guān)于C++文件讀取的4種情況,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-01-01
  • VS2017中配置QT5.12.0的圖文教程

    VS2017中配置QT5.12.0的圖文教程

    本文主要介紹了VS2017中配置QT5.12.0的圖文教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • C語言結(jié)構(gòu)體版學(xué)生成績(jī)管理系統(tǒng)

    C語言結(jié)構(gòu)體版學(xué)生成績(jī)管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了C語言結(jié)構(gòu)體版的學(xué)生成績(jī)管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-02-02
  • c語言中字符串與字符串?dāng)?shù)組詳解

    c語言中字符串與字符串?dāng)?shù)組詳解

    在C語言當(dāng)中,字符串?dāng)?shù)組可以使用char a[] [10]; 或者char *a[]; 表示,下面這篇文章主要給大家介紹了關(guān)于c語言中字符串與字符串?dāng)?shù)組的相關(guān)資料,需要的朋友可以參考下
    2021-11-11
  • C++深入淺出講解隱藏this指針的用法

    C++深入淺出講解隱藏this指針的用法

    在C++中,每一個(gè)對(duì)象都能通過this指針來訪問自己的地址。this?指針是所有成員函數(shù)的隱含參數(shù)。因此,在成員函數(shù)內(nèi)部,它可以用來指向調(diào)用對(duì)象
    2022-05-05
  • 淺談Qt QGraphics體系及刷新機(jī)制介紹

    淺談Qt QGraphics體系及刷新機(jī)制介紹

    這篇文章主要介紹了淺談Qt QGraphics體系及刷新機(jī)制介紹,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 使用C語言解決字符串全排列問題

    使用C語言解決字符串全排列問題

    這篇文章主要介紹了使用C語言解決字符串全排列問題,文中包括了一道ACM相關(guān)的競(jìng)賽題目作為實(shí)例,需要的朋友可以參考下
    2015-08-08
  • C語言實(shí)現(xiàn)掃雷游戲(可以自動(dòng)展開)

    C語言實(shí)現(xiàn)掃雷游戲(可以自動(dòng)展開)

    這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)掃雷游戲,可以自動(dòng)展開,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-11-11
  • C 語言中strstr函數(shù)實(shí)例詳解

    C 語言中strstr函數(shù)實(shí)例詳解

    這篇文章主要介紹了C 語言中strstr函數(shù)實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • C++11學(xué)習(xí)之多線程的支持詳解

    C++11學(xué)習(xí)之多線程的支持詳解

    這篇文章主要為大家詳細(xì)介紹了C++11中多線程支持的相關(guān)資料,文中的示例代碼講解詳細(xì),對(duì)我們深入了解C++11有一定的幫助,需要的可以參考一下
    2023-02-02

最新評(píng)論