首頁 > 後端開發 > C++ > 如何用 C 語言產生真正均勻的隨機數?

如何用 C 語言產生真正均勻的隨機數?

Susan Sarandon
發布: 2024-12-22 19:42:11
原創
692 人瀏覽過

How Can I Generate Truly Uniform Random Numbers in C  ?

在整個範圍內均勻產生隨機數

您尋求產生在指定間隔 [min, max] 內均勻分佈的隨機數。但是,您目前的方法正在產生圍繞單點聚集的數字。

避免 rand()

rand() 函數對於產生均勻分佈通常不可靠。它依賴於可能引入偏差的模運算子。

C 11 均勻分佈

在C 11 中,考慮使用std::uniform_int_distribution 以獲得更可靠的解決方案:

#include <iostream>
#include <random>

int main()
{    
    const int range_from  = min;
    const int range_to    = max;
    std::random_device                  rand_dev;
    std::mt19937                        generator(rand_dev());
    std::uniform_int_distribution<int>  distr(range_from, range_to);

    std::cout << distr(generator) << '\n';
}
登入後複製

其他隨機產生器

C 11 庫提供了各種其他隨機產生器具有不同的分佈。例如,std::shuffle 可以隨機重新排序容器的元素。

Boost.Random Alternative

如果 C 11 不可用,請考慮使用 Boost.Random,它提供類似的功能。

以上是如何用 C 語言產生真正均勻的隨機數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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