首頁 >後端開發 >C++ >如何在 C 中產生真正無偏的隨機整數?

如何在 C 中產生真正無偏的隨機整數?

Susan Sarandon
Susan Sarandon原創
2024-12-25 15:01:09201瀏覽

How Can I Generate Truly Unbiased Random Integers in C  ?

使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn