C++ 11 在頭文件 #include 中定義了隨機(jī)數(shù)庫,也可以使用 C 中生成隨機(jī)數(shù)的方法。
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的京山網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!C 生成隨機(jī)數(shù) 概述C 語言中使用 rand() 函數(shù)產(chǎn)生 0 ~ RAND_MAX 范圍內(nèi)均勻分布到整數(shù),其中 RAND_MAX 是和系統(tǒng)相關(guān)的一個(gè)固定值。
#include#includesrand(time(nullptr));//設(shè)置隨機(jī)數(shù)種子
rand();//產(chǎn)生一個(gè)隨機(jī)數(shù)
限定隨機(jī)數(shù)范圍{//產(chǎn)生 [0,b) 范圍內(nèi)到隨機(jī)數(shù)
int randoxNumber = rand() % b ;
}
{//產(chǎn)生 [a,b) 范圍內(nèi)到隨機(jī)數(shù)
int randoxNumber = a + rand() % ( b -a ) ;
}
{//產(chǎn)生 [a,b] 范圍內(nèi)到隨機(jī)數(shù)
int randoxNumber = a + rand() % ( b -a +1 ) ;
}
{//產(chǎn)生 [0,1] 范圍內(nèi)到隨機(jī)小數(shù)
double randoxNumber =rand() / RAND_MAX
}
{//產(chǎn)生 [0,1) 范圍內(nèi)到隨機(jī)小數(shù)
double randoxNumber =rand() / ( RAND_MAX +1 )
}
C++ 中的隨機(jī)數(shù)
概述C++ 11 在頭文件 #include 中定義了隨機(jī)數(shù)庫,包括隨機(jī)數(shù)生成器和隨機(jī)數(shù)分布器。
隨機(jī)數(shù)生成器①.概述
隨機(jī)數(shù)生成器用來使用指定的種子產(chǎn)生一個(gè)隨機(jī)數(shù)。
②.random_device
random_device 是標(biāo)準(zhǔn)庫提供到一個(gè)非確定性隨機(jī)數(shù)生成器,使用硬件作為隨機(jī)數(shù)來源,故其調(diào)用代價(jià)較高,一般用來產(chǎn)生隨機(jī)數(shù)種子。
random_device rd;
for (int i = 0; i< 10; ++i)
{cout<< rd()<< endl;
}
③.default_random_engine
default_random_engine 是標(biāo)準(zhǔn)庫提供的默認(rèn)隨機(jī)數(shù)生成器,其實(shí)現(xiàn)和編譯器有關(guān)。
random_device rd;
default_random_engine r_eng(rd());
for (int i = 0; i< 10; ++i)
{cout<< r_eng()<< endl;
}
④.minstd_rand
minstd_rand 是標(biāo)準(zhǔn)庫提供的采用線性同余算法的偽隨機(jī)數(shù)生成器。
random_device rd;
minstd_rand r_eng(rd());
for (int i = 0; i< 10; ++i)
{cout<< r_eng()<< endl;
}
⑤.mt19937
mt19937 是標(biāo)準(zhǔn)庫提供的采用梅森旋轉(zhuǎn)算法的偽隨機(jī)數(shù)生成器,可以快速產(chǎn)生高質(zhì)量到隨機(jī)數(shù)。
random_device rd;
mt19937 r_eng(rd());
for (int i = 0; i< 10; ++i)
{cout<< r_eng()<< endl;
}
⑥.ranlux24_base
ranlux24_base 是標(biāo)準(zhǔn)庫提供的采用帶進(jìn)位減法的偽隨機(jī)數(shù)生成器。
random_device rd;
ranlux24_base r_eng(rd());
for (int i = 0; i< 10; ++i)
{cout<< r_eng()<< endl;
}
隨機(jī)數(shù)分布器①.概述
隨機(jī)數(shù)分布器用于限定生成隨機(jī)數(shù)的范圍及分布類型。
②.uniform_int_distribution
uniform_int_distribution 用于生成指定范圍的均勻分布的整數(shù)。
random_device rd;//用于生成隨機(jī)數(shù)種子
mt19937 r_eng(rd());//隨機(jī)數(shù)生成器
uniform_int_distributiondis(1, 100);//隨機(jī)數(shù)分布器 閉區(qū)間
for (int i = 0; i< 10; ++i)
{cout<< dis(r_eng)<< endl;
}
③.uniform_real_distribution
uniform_real_distribution 用于生成指定范圍的均勻分布的浮點(diǎn)數(shù)。
random_device rd;//用于生成隨機(jī)數(shù)種子
mt19937 r_eng(rd());//隨機(jī)數(shù)生成器
uniform_real_distributiondis(1, 100);//隨機(jī)數(shù)分布器 閉區(qū)間
for (int i = 0; i< 10; ++i)
{cout<< dis(r_eng)<< endl;
}
④.normal_distribution
normal_distribution 用于生成指定均值和方差的正態(tài)分布的浮點(diǎn)數(shù)。
random_device rd;//用于生成隨機(jī)數(shù)種子
mt19937 r_eng(rd());//隨機(jī)數(shù)生成器
normal_distribution<>dis(4, 1.5);//隨機(jī)數(shù)分布器,均值、方差
for (int i = 0; i< 10; ++i)
{cout<< dis(r_eng)<< endl;
}
⑤.bernoulli_distribution
bernoulli_distribution 用于生成二項(xiàng)分布到布爾值,可以指定 true 的概率。
random_device rd;//用于生成隨機(jī)數(shù)種子
mt19937 r_eng(rd());//隨機(jī)數(shù)生成器
bernoulli_distribution dis( 0.6);//隨機(jī)數(shù)分布器,生成 1 的概率是 0.6
for (int i = 0; i< 10; ++i)
{cout<< dis(r_eng)<< endl;
}
Qt 中的隨機(jī)數(shù)
概述Qt 中生成隨機(jī)數(shù)的方法和 C 語言中差不多,對(duì)應(yīng)到函數(shù)為 qsrand() 、qrand()。使用使需要包含頭文件 #include 。
代碼示例auto seed = QDateTime::currentDateTime().toMSecsSinceEpoch();
qsrand(seed);
for (int i = 0; i< 10; ++i)
{qDebug()<< qrand() % 10;// 0 - 9 范圍
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購,新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧