首頁 >後端開發 >C++ >為什麼 `rand() % 14` 有時只會回傳 6 或 13?

為什麼 `rand() % 14` 有時只會回傳 6 或 13?

DDD
DDD原創
2024-11-25 10:34:11341瀏覽

Why Does `rand() % 14` Sometimes Only Return 6 or 13?

Rand() % 14:揭開重複值的奧秘

在程式設計中,rand() 程式常用來產生隨機數字數字函數。然而,一些用戶遇到了一個有趣的問題,即表達式 rand() % 14 始終只產生 6 或 13。

要了解此行為,讓我們深入研究 rand() 的工作原理。它利用 Apple 的梅森同餘生成器 (MCG) 演算法,該演算法涉及特定的乘數。不幸的是,這個乘數可以被 7 整除,導致在有限範圍內產生隨機數時會出現不穩定的行為。

具體來說,呼叫 srand() 後產生的第一個隨機數將只表現出一位模 14 的熵。這意味著它只能假設兩個可能的值:6 或 13。

要解決此問題,有一個簡單的解決方案。只需呼叫 rand() 幾次並丟棄結果即可引入隨機性。這確保了 rand() % 14 中使用的第一個隨機數不受初始播種的影響。

以上是為什麼 `rand() % 14` 有時只會回傳 6 或 13?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn