首頁 > 後端開發 > C++ > 如何在C中有效產生隨機浮點數?

如何在C中有效產生隨機浮點數?

Barbara Streisand
發布: 2024-12-25 14:24:09
原創
393 人瀏覽過

How Can I Generate Random Float Numbers in C   Effectively?

在 C 中產生隨機浮點數

對於您的特定困境,將 rand 的輸出除以常數並不是產生隨機浮點數的可靠方法。雖然它可以為學習目的提供近似結果,但它不適合需要可靠隨機數的嚴肅應用。

使用數學運算產生隨機浮點

產生高精度C 中的隨機浮點數,利用 C 標準函式庫提供的函數。例如,要產生0.0 到1.0 之間的隨機浮點數,可以使用以下程式碼:

float r = static_cast<float> (rand()) / static_cast<float> (RAND_MAX);
登入後複製

如果需要產生任意區間內的隨機浮點數,請相應調整公式:

  • 從0.0到X:

    float r2 = static_cast<float> (rand()) / (static_cast<float> (RAND_MAX/X));
    登入後複製
  • 從低到高:

    float r3 = LO + static_cast<float> (rand()) /( static_cast<float> (RAND_MAX/(HI-LO)));
    登入後複製

使用真正的隨機數生成器

在需要常態分佈的真正隨機數的情況下,請考慮採用更高級的方法,例如:

Mersenne Twister
srand (static_cast<unsigned> (time(0)));
登入後複製

線性回授移位註冊(LFSR)

    Blum Blum Shub
  • 播種隨機數產生器

播種隨機數產生器在使用rand() 之前,必須透過呼叫srand() 來初始化隨機數產生器。通常,這是透過以下方式實現的:記住#include 適當的標頭:對於rand 和srand 時間遵守這些準則,您可以在 C語言中有效地產生隨機浮點,用於從模擬到資料分析的各種應用。

以上是如何在C中有效產生隨機浮點數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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