C 11帶來的隨機數生成器

2022-03-27 22:32:55 字數 1160 閱讀 2394

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

1. random_device

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

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

#include #include 

intmain()

2. random number engine

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

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

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

#include #include 

intmain()

3. random number distributions

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

//

平均分布

#include #include

intmain()

//

正太分布

#include #include

#include

#include

#include

#include

intmain()

for(auto p : hist)

}

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

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

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

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

隨機數生成器

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