Rand() % 14 生成器回傳有限值
在最近的程式中,開發人員遇到了rand() % 14 的問題表達式總是只產生6 或13 的值。儘管嘗試多次執行程式碼,結果仍然保持一致。問題在於 Apple 的 MCG 所使用的隨機數產生器的性質。
根據維基百科的解釋,MCG 的乘數 16807 可以被 7 整除。這意味著 srand() 之後產生的第一個隨機數將以 14 為模時,只有一位熵,導致值的範圍有限。此缺陷歸因於 Apple 使用的低品質隨機數產生器。
解決此問題的簡單方法是在 srand() 之後多次呼叫 rand() 並丟棄初始結果。這將增強生成數字的熵並解決有限值輸出的問題。
以上是為什麼「rand() % 14」在 Apple 的 MCG 上回傳有限值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!