C 11 C 11帶來的隨機數生成器

2021-06-26 04:32:20 字數 1128 閱讀 3636

c++11帶來諸多特性,random就是其一.

1. random_device

標準庫提供了乙個非確定性隨機數生成裝置.在linux的實現中,是讀取/dev/urandom裝置;windows的實現居然是用rand_s,在這裡強烈譴責一下.

random_device提供()操作符,用來返回乙個min()到max()之間的乙個數字.如果是linux(unix like或者unix)下,都可以使用這個來產生高質量的隨機數,可以理解為真隨機數.

#include #include int main()

2. random number engine

標準把隨機數抽象成隨機數引擎和分布兩部分.引擎用來產生隨機數,分布產生特定分布的隨機數(比如平均分布,正太分布等).

標準提供三種常用的引擎:linear_congruential_engine,mersenne_twister_engine和subtract_with_carry_engine.第一種是線性同餘演算法,第二種是梅森旋轉演算法,第三種帶進製的線性同餘演算法.第一種是最常用的,而且速度也是非常快的; 第二種號稱是最好的偽隨機數生成器;第三種沒用過....

隨機數引擎接受乙個整形引數當作種子,不提供的話,會使用預設值. 推薦使用random_device來產生乙個隨機數當作種子.(windows下愛咋整咋整,誰叫windows的random_device是呼叫rand_s)

#include #include int main()

3. random number distributions

標準提供各種各樣的分布,不過我們經常用的比較少,比如平均分布,正太分布...使用也很簡單

//平均分布

#include #include int main()

//正太分布

#include #include #include #include #include #include int main()

for(auto p : hist)

}

C 11 C 11帶來的隨機數生成器

1.random device 標準庫提供了乙個非確定性隨機數生成裝置.在linux的實現中,是讀取 dev urandom裝置 windows的實現居然是用rand s,在這裡強烈譴責一下.random device提供 操作符,用來返回乙個min 到max 之間的乙個數字.如果是linux un...

C 11帶來的隨機數生成器

c 11帶來諸多特性,random就是其一.1.random device 標準庫提供了乙個非確定性隨機數生成裝置.在linux的實現中,是讀取 dev urandom裝置 windows的實現居然是用rand s,在這裡強烈譴責一下.random device提供 操作符,用來返回乙個min 到m...

隨機數生成器

標頭檔案 內容 rand,srand函式和rand max常量 rand max 在windows系統中為32767 在類unix系統中為2147483647 rand 函式返回乙個0 rand max的隨機整數 srand seed 函式 接受unsigned int 型別的引數seed,以see...