對於您的特定困境,將 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 Twistersrand (static_cast<unsigned> (time(0)));
線性回授移位註冊(LFSR)
以上是如何在C中有效產生隨機浮點數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!