首頁 > 後端開發 > C++ > C 如何高效率產生均勻分佈的隨機整數?

C 如何高效率產生均勻分佈的隨機整數?

DDD
發布: 2024-12-24 05:59:13
原創
143 人瀏覽過

How Can C   Efficiently Generate Uniformly Distributed Random Integers?

高效產生均勻分佈的隨機整數

產生指定範圍內的均勻分佈的隨機整數是許多程式設計應用程式中的一項基本任務。雖然看似微不足道,但要達到最佳速度、均勻性、靈活性和種子要求可能具有挑戰性。

為了解決這些問題,C 2011 標準引入了強大的隨機數庫。下面的程式碼片段利用該函式庫的功能來有效地產生均勻分佈的隨機整數:

#include <random>

std::random_device rd;     // Only used once to initialise (seed) engine
std::mt19937 rng(rd());    // Random-number engine used (Mersenne-Twister in this case)
std::uniform_int_distribution<int> uni(min,max); // Guaranteed unbiased

auto random_integer = uni(rng);
登入後複製

這種方法有幾個優點:

  • 高效: 梅森-rng中使用的Twister引擎以其速度和效率而聞名,使其適合產生大量隨機數
  • 統一:uniform_int_distribution類別確保在指定範圍內均勻產生隨機整數。
  • 靈活: 最小值和最大值可以根據需要進行調整,允許範圍廣泛
  • 可種子: rand_device 為隨機生成器提供種子,允許在需要時獲得可重現的結果。

透過利用這種標準化方法,程式設計師可以有效地產生均勻分佈的隨機整數,無需複雜的公式或自訂實作。

以上是C 如何高效率產生均勻分佈的隨機整數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板