Boost 隨機數庫的使用

2021-08-13 10:14:01 字數 1561 閱讀 4548

《一》首先,我們需要包含標頭檔案#include

《二》其次,我們需要乙個偽隨機數發生器(generator)。語句

boost::mt19937 gen;

宣告了乙個mt19937型別的偽隨機數發生器gen

boost 一共提供了17種型別偽隨機發生器供使用者選擇,它們是:

minstd_rand,  rand48, lrand48, ecuyer1988, kreutzer1986, hellekalek1995, mt11213b, mt19937, lagged_fibonacci 607, lagged_fibonacci1279, lagged_fibonacci2281, lagged_fibonacci3217, lagged_fibonacci4423, lagged_fibonacci9689, lagged_fibonacci19937, lagged_fibonacci23209, lagged_fibonacci44497

到底是使用哪乙個,需要在效能、質量和記憶體之間進行權衡。一般的應用的話,boost文件推薦使用mt19937。

《三》 然後,我們需要乙個分布函式

由偽隨機數發生器生成的偽隨機數一般是乙個很大區間上的均勻分布(如[1,2^99999999])。而要產生我們想要的分布的隨機數,還要對其做某些變換。比如語句boost::uniform_int<> dist(1, 6); 就是為了得到我們想要的分布:上的均勻分布。

boost random library提供了如下的分布函式:

uniform_smallint ------ 乙個整數集上的離散均勻分布

uniform_int ------ 乙個整數集上的離散均勻分布

uniform_01 ------ [0, 1)上的連續均勻分布

uniform_real ------ [ min, max)上的連續均勻分布

bernoulli_distribution ------ 伯努利分布

geometric_distribution ------ 幾何分布

********_distribution ------ 三角分布

exponential_distribution ------ 指數分布

normal_distribution ------ 正態分佈

lognormal_distribution ------ 對數正態分佈

uniform_on_sphere ------ 球面上的均勻分布

《四》最後,把以上兩個結合生成我們想要的隨機數發生器:

boost::variate_generator> die(gen, dist);

總結一下:

#include

boost::mt19937 gen; //宣告隨機數發生器                                   

boost::uniform_int<>dist(1,6);//宣告合適的分布函式

boost::variate_generator>die(gen,dist);//以上兩者結合生成我們想要的隨機數發生器

for( int i=0; i<10; ++i) {

std::cout<

boost庫 隨機數 random庫

include 提供偽隨機數的實現,提供隨機數發生器 分布等很多有用的數學 統計學相關概念 random庫提供了30多個隨機數發生器,使用的演算法包括線性同餘 逆同餘 mersennetwister 馬特賽特旋轉 fibonacci ranlux及它們的混合。1 乙個隨機數種子 seed 設定種子值...

boost建立隨機數

在c 中,利用boost庫中的類建立隨機數以乙個在 10,10 上的均勻分布為例 建立隨機數的生成器 建立隨機數的分布函式 裝配生成器與分布函式,生成變數生成器 include include using std cout using std endl using boost mt19937 usi...

(五)boost庫之隨機數random

boost庫為我們提供了許多的日常隨機數生成器 1.uniform smallint 在小整數域內的均勻分布 2.uniform int 在整數域上的均勻分布 3.uniform 01 在區間 0,1 上的實數連續均勻分布 4.uniform real 在區間 min,max 上的實數連續均勻分布 ...