2016-11-09 89 views
1

我用default_random_engine來生成不同數字的列表,但它們碰巧是一樣的。我想知道產生不同的數字嗎?我知道srand()呢。但是,我可以使用這個默認引擎嗎?如何使用uniform_real_distribution生成不同的數字?

default_random_engine engine{ static_cast<unsigned int>(time(0)) }; 
uniform_real_distribution<double>randomNumber{ 50,100 }; 
for(int i=0; i<10;i++){ 
    a[i]= randomNumber(engine); 
    } 
+0

當你說他們都是一樣的,你的意思是所有的數字在一次運行中是相同的,或者你每次都得到相同的一組數字? –

+1

不要使用'time(0)'種子,用'operator()'種子關閉'std :: random_device'的單個實例,無論哪種方式,理想情況下,只對您的整個過程種子一次。 – WhozCraig

+0

@PaulRooney每次我生成一個不同的隨機數組。在這個數組中,碰巧有相同的數字(元素)。我想知道如何讓這個數組中的每個元素都是唯一的? –

回答

2

該行爲是針對隨機數生成器設計的。您需要在啓動程序時爲隨機生成器設置「種子」。

如果你有C++擴展@WhozGraig建議他們最好。這是非常草率的,但很多人使用time()函數每次運行程序時都得到一個不同的數字。

相關問題