回答
std::normal_distribution
沒有做任何的隨機數生成。這是一個隨機數字分佈。隨機數分佈只映射由隨機數引擎返回某種分佈的值。他們自己不會做任何一代人。所以它是你關心的隨機數引擎。
標準提供的隨機數引擎之一,std::mersenne_twister_engine
是一個非常高質量的隨機數引擎。您可以使用它,象這樣的正態分佈產生隨機數:
std::random_device rd;
std::mt19937 gen(rd()); // Create and seed the generator
std::normal_distribution<> d(mean, deviation); // Create distribution
std::cout << d(gen) << std::endl; // Generate random numbers according to distribution
注意std::mt19937
是std::mersenne_twister_engine
一個typedef
。
std :: mt19937'是typedef for a特殊的'std :: mersenne_twister'模板實例化。 'std :: mt19937'是一個經過驗證的僞隨機數發生器。模板可以用產生不太好的引擎的值來實例化,所以大多數人應該堅持'std :: mt19937'。 – 2013-02-19 23:50:50
<random>
的標準庫的整點是從隨機數生成器,以獨立分佈。 You提供了一個生成統一整數的隨機數生成器,並且分佈負責將該隨機統一整數序列轉換爲期望分佈的樣本。
幸運的是,<random>
庫還包含一個隨機數生成器的集合。 Mersenne Twister(std::mt19937
)尤其是一個相對較好的(即快速和統計學上的高質量)。
(您還需要提供用於發生器的種子)
我知道這個帖子很老,但是,我希望我的回答是有益的。我使用normal_distribution
爲傳感器生成高斯噪聲。這對模擬傳感器是有益的。例如,假設您有一個傳感器,可以爲您提供2D機器人的位置。每次移動機器人時,傳感器都會提供一些關於機器人位置的信息。在OpenGL中,你可以模擬這個例子。例如,您可以跟蹤鼠標的位置,並將一些高斯噪聲添加到鼠標的實際位置。在這種情況下,您可以使用傳感器來跟蹤鼠標的位置,但由於噪音而具有不確定性。
- 1. 用於C#的LINEST函數模擬器
- 2. C++ TR1:如何使用normal_distribution?
- 3. 數學背後用C default_random_engine和normal_distribution ++
- 4. 使用c模擬mysql壓縮函數#
- 5. 如何使用OCMock模擬C函數
- 6. 模擬構造函數的應用()對於構造函數(JavaScript)
- 7. C++ 11 normal_distribution和MATLAB normpdf
- 8. C++模擬框架能夠模擬非虛擬方法和C函數
- 9. 從模擬函數調用
- 10. 用NUnit模擬函數?
- 11. 用JavaScript模擬shell'echo'函數
- 12. 是否有一個模擬C的crypt函數的java函數?
- 13. 僞造虛擬模板函數C++
- 14. 在pester中模擬c#dll函數?
- 15. 函數的模擬函數參數
- 16. 類型的std :: normal_distribution的模板
- 17. 虛擬函數C++
- 18. 虛擬函數C#
- 19. 可以使用宏來模擬C++模板化函數嗎?
- 20. 模擬內部函數的響應,但測試外部函數
- 21. 綁定std :: normal_distribution到一個std ::函數存儲在std :: vector
- 22. 調用父類函數的模擬類
- 23. 模擬隱式轉換的C++函數模板實例
- 24. 使用C#Selenium WebDriver模擬API響應
- 25. 模擬安裝應用程序c#
- 26. 模擬visual C++
- 27. nmake - 模擬eval函數
- 28. 模擬JavaScript擴展函數
- 29. unittest模擬函數輸出
- 30. JMockit模擬構造函數
這完全取決於你的用例嗎? – 111111 2013-02-19 19:24:31
用於模擬應用程序。 如果你告訴我使用Mersenne-Twister發生器,它會很好! – Aleanar 2013-02-19 19:30:21
請參閱此處的示例以瞭解如何使用正態分佈的Mersenne-Twister:http://en.cppreference.com/w/cpp/numeric/random/normal_distribution – 111111 2013-02-19 19:33:47