隨機(jī)數(shù)和概率分布<random>
重要概念
1,引擎,能夠產(chǎn)生隨機(jī)的根據(jù)最大最小值均勻分布的無符號(hào)值的函數(shù)對(duì)象,隨機(jī)數(shù)生成器
default_random_engine dre1;//默認(rèn)的初始化的引擎產(chǎn)生的數(shù)是定義好了的,不是隨機(jī)的
default_random_engine dre2(seed);//隨機(jī)的
2,分布,引擎產(chǎn)生的隨機(jī)值按某種分布產(chǎn)生最后的隨機(jī)數(shù);線性、正態(tài)、指數(shù)、伽馬、伯努利等分布
uniform_int_distribution<int> d(10,20);//產(chǎn)生整數(shù)基于范圍為[10,20]的均勻分布,不指定范圍則為[0,numeric_limits<type>::max()]
uniform_real_distribution<double> dd;//產(chǎn)生浮點(diǎn)數(shù),默認(rèn)范圍為[0.0,1.0)
dd(dre);//產(chǎn)生隨機(jī)數(shù)
shuffle (v.begin(), v.end(), dre);//將容器某范圍的值隨機(jī)交換
引擎是狀態(tài)相關(guān)的,即如果引擎狀態(tài)相同則產(chǎn)生的隨機(jī)數(shù)是相同的,為此可以設(shè)置特定的不可預(yù)測(cè)的操作來獲取不同的狀態(tài),從而產(chǎn)生不可預(yù)測(cè)的隨機(jī)數(shù);可預(yù)測(cè)的隨機(jī)數(shù)可以用來做測(cè)試集。
隨機(jī)引擎產(chǎn)生的隨機(jī)值不是隨機(jī)數(shù),需通過分布和隨機(jī)值共同產(chǎn)生隨機(jī)數(shù)
default_random_engine引擎在不同平臺(tái)下可能產(chǎn)生不同的隨機(jī)序列值
分布的參數(shù)傳遞
uniform_int_distribution<> d(0, 20); // initialize parameters ‘‘a(chǎn)’’ and ‘‘b’’
d.a() // yields value of parameter ‘‘a(chǎn)’’
d.b() // yields value of parameter ‘‘b’’
d.param().a() // yields value of parameter ‘‘a(chǎn)’’
d.param().b() // yields value of parameter ‘‘b’’
或者將參數(shù)作為一個(gè)整體傳遞
uniform_int_distribution<>::param_type pt(100, 200); // other parametrization
d(e,pt) // generates one value according to parametrization pt
d.param(pt); // let all generated values use parametrization pt
復(fù)數(shù)
<complex>
使用cin輸入復(fù)數(shù)時(shí)
1,只輸入實(shí)部可以不加()
2,輸入完整的復(fù)數(shù)(real,imaginary)
使用cout輸出復(fù)數(shù)時(shí)
輸出(real,imaginary)
數(shù)值函數(shù)