誰能告訴我如何在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++中做到這一點。
誰能告訴我如何在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++中做到這一點。
具有相同種子的兩種不同的初始化將在隨後的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();
您是否正在尋找種子隨機數發生器的功能srand?它通常用於在當前時間播種,但如果需要,您可以使用它播種固定值。
創建std::random_device
的實例,它提供了可能的非確定性的均勻隨機數,並用它來播種自己選擇的隨機數引擎:
std::random_device rd;
std::default_random_engine gen(rd());
如果你想知道如何要種子C庫函數rand
,您需要使用std::srand
。它通常在當前時間播種,std::time(0)
。
當然,沒有理由不能使用std::random_device
種子rand
。
,我需要使用 – user2851655
@ user2851655看到更新 – 4pie0
感謝親愛的什麼庫............. – user2851655