2013-02-12 27 views

回答

16

你如何定義「便攜式」?

如果使用「便攜式」,則表示「將在給定相同輸入的情況下產生二進制相同的隨機數序列」,則是的,rand不是便攜式。是的,C++ random generators是便攜式(大多數不是std::default_random_enginestd::random_device),因爲它們實現了特定的算法。 rand被允許爲任何東西,只要它不完全不同於隨機數字發生器。

這就是說,正如@PeteBecker所指出的那樣,分佈本身並沒有那麼明確。因此,雖然std::mt19937將爲給定的種子生成相同的值序列,但不同的std::uniform_int_distribution可以爲相同的輸入序列和範圍提供不同的值。

當然,如果你需要一致性,你可以隨時定義你自己的分佈。

+3

是的,這就是我的意思的便攜性。 – Xavier 2013-02-12 20:13:22

+0

您可以在[我的答案](http://stackoverflow.com/a/24554535/1708801)中找到正在實施的分佈的基本原理。 – 2014-07-03 14:19:50

5

<random>中描述的隨機數引擎對其算法具有明確的要求以確保可移植性。分佈不。

+0

你有參考嗎? – 2013-11-11 23:06:51

+1

C++標準是這方面的參考。 – 2013-11-12 00:24:30