C++ 11中的庫是否可移植?我已經避免了rand(),因爲我聽說它不是可移植的。C++ 11中的<random>庫是否可移植?
回答
你如何定義「便攜式」?
如果使用「便攜式」,則表示「將在給定相同輸入的情況下產生二進制相同的隨機數序列」,則是的,rand
不是便攜式。是的,C++ random generators是便攜式(大多數不是std::default_random_engine
或std::random_device
),因爲它們實現了特定的算法。 rand
被允許爲任何東西,只要它不完全不同於隨機數字發生器。
這就是說,正如@PeteBecker所指出的那樣,分佈本身並沒有那麼明確。因此,雖然std::mt19937
將爲給定的種子生成相同的值序列,但不同的std::uniform_int_distribution
可以爲相同的輸入序列和範圍提供不同的值。
當然,如果你需要一致性,你可以隨時定義你自己的分佈。
<random>
中描述的隨機數引擎對其算法具有明確的要求以確保可移植性。分佈不。
你有參考嗎? – 2013-11-11 23:06:51
C++標準是這方面的參考。 – 2013-11-12 00:24:30
例如,您可以使用std::mt19937 (Mersenne Twister)生成「給定相同輸入的相同序列的隨機數字」(來自@Nicol Bolas)。你絕對不能用rand()
這樣做,這很煩人。
相關問題:
- 1. 將isnan移植到C++ 11
- 2. __COUNTER__宏是否可移植?
- 3. 如何可移植是C++?
- 4. 在C++中移植線程11
- 5. 是否是可移植的查詢?
- 6. CUDA .ptx文件是否可移植?
- 7. 是否可以使用在MonoDroid中引用System.Net的可移植類庫?
- 8. C#可移植類庫 - 使用圖像
- 9. CultureInfo.LCID是否可用於Xamarin可移植類庫?
- 10. packetdrill測試是否可移植?
- 11. 使用C++ 11 /近期g ++版本的可移植性(4.7/4.6)
- 12. 使用C++可移植計時代碼的正確方法11
- 13. 可移植類庫中的SortedSet <T>的替代方案?
- 14. 是否有可能將Windows Phone 7.0 Silverlight類庫移植到Windows 10移動中
- 15. 可移植類庫版本
- 16. 是否有一個可移植的C編譯器的Windows?
- 17. ASP.Net會員證書是否可移植?
- 18. 什麼是可移植類庫?
- 19. 使用C#便攜庫中的F#可移植類庫
- 20. StreamReader和可移植類庫
- 21. SQLite庫 - Python可移植性
- 22. 共享庫可移植性
- 23. C中的open(... O_DIRECT)的可移植性?
- 24. 可移植類庫中的併發ObservableCollection
- 25. 可移植類庫中的System.Security.Cryptography.Xml?
- 26. 可移植類庫中的SafeHandleZeroOrMinusOneIsInvalid
- 27. C - Glib GINT_TO_POINTER可移植性
- 28. C中的可移植性問題
- 29. 是否有可用於可移植類庫的System.Environment.Machinename的等效項?
- 30. 是否有可能將std ::將對象移出函數? (C++ 11)
是的,這就是我的意思的便攜性。 – Xavier 2013-02-12 20:13:22
您可以在[我的答案](http://stackoverflow.com/a/24554535/1708801)中找到正在實施的分佈的基本原理。 – 2014-07-03 14:19:50