2014-01-21 38 views
0

誰能告訴我如何在C++中生成相同的隨機數值?如何在C++中設置RNG的種子?

我知道在Matlab我能做到以下幾點:

rng(1) 
a= randi(10,1,10) 

答案是一樣的。例如

5  8  1  4  2  1  2  4  4  6 

5  8  1  4  2  1  2  4  4  6 

5  8  1  4  2  1  2  4  4  6 

除非種子重置,否則它會始終給我相同的值。

但我不知道如何在C++中做到這一點。

回答

0

具有相同種子的兩種不同的初始化將在隨後的rand調用中產生相同的連續結果 。

如果seed設置爲1,則發生器將重新初始化爲其初始值 ,併產生與調用rand或 srand之前相同的值。

#include <stdlib.h>  /* srand, rand */ 
#include <time.h> 

int random = rand(); 
int next = rand(); 
int next2 = rand(); 

//another sequence 
srand (time(NULL)); 
int 2random = rand(); 
int 2next = rand(); 
int 2next2 = rand(); 

//will repeat the first sequence 
srand (1); 
int 3random = rand(); 
int 3next = rand(); 
int 3next2 = rand(); 
+0

,我需要使用 – user2851655

+0

@ user2851655看到更新 – 4pie0

+0

感謝親愛的什麼庫............. – user2851655

0

您是否正在尋找種子隨機數發生器的功能srand?它通常用於在當前時間播種,但如果需要,您可以使用它播種固定值。

0

創建std::random_device的實例,它提供了可能的非確定性的均勻隨機數,並用它來播種自己選擇的隨機數引擎:

std::random_device rd; 
std::default_random_engine gen(rd()); 

如果你想知道如何要種子C庫函數rand,您需要使用std::srand。它通常在當前時間播種,std::time(0)

當然,沒有理由不能使用std::random_device種子rand