使用std::random_device 產生無偏隨機整數
在追求產生均勻分佈的隨機整數時,最初的擔憂源於缺點使用rand() 的方法。為了解決這些問題,C 標準函式庫提供了更強大、更有效率的解決方案。
隨機數產生的基礎在於使用以外部來源為種子的隨機數引擎。在這種情況下,std::random_device 充當種子機制,提供將用於產生後續隨機數的非確定性初始值。
隨機數引擎的首選是 std::mt19937 ,利用 Mersenne-Twister 演算法。該引擎表現出出色的統計特性,並已被證明具有高性能。
為了產生指定範圍內的無偏隨機整數,我們使用 std::uniform_int_distribution。這種分佈確保該範圍內的所有值都有相同的被選擇機率。
下面的程式碼封裝了這些概念:
#include <random> std::random_device rd; std::mt19937 rng(rd()); std::uniform_int_distribution<int> uni(min, max); auto random_integer = uni(rng);
透過使用這種方法,開發人員可以相信一致性隨機產生的整數,消除任何潛在的偏差並確保可靠且可預測的結果。
以上是如何在 C 中產生真正無偏的隨機整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!