首頁 > 後端開發 > C++ > 為什麼「rand() % 14」在 Apple 的 MCG 上回傳有限值?

為什麼「rand() % 14」在 Apple 的 MCG 上回傳有限值?

Mary-Kate Olsen
發布: 2024-11-28 00:20:10
原創
671 人瀏覽過

Why Does `rand() % 14` Return Limited Values on Apple's MCG?

Rand() % 14 生成器回傳有限值

在最近的程式中,開發人員遇到了rand() % 14 的問題表達式總是只產生6 或13 的值。儘管嘗試多次執行程式碼,結果仍然保持一致。問題在於 Apple 的 MCG 所使用的隨機數產生器的性質。

根據維基百科的解釋,MCG 的乘數 16807 可以被 7 整除。這意味著 srand() 之後產生的第一個隨機數將以 14 為模時,只有一位熵,導致值的範圍有限。此缺陷歸因於 Apple 使用的低品質隨機數產生器。

解決此問題的簡單方法是在 srand() 之後多次呼叫 rand() 並丟棄初始結果。這將增強生成數字的熵並解決有限值輸出的問題。

以上是為什麼「rand() % 14」在 Apple 的 MCG 上回傳有限值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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