Rand() % 14 僅產生值6 或13:打破謎團
您面臨的問題是由於固有的正如您提供的答案中所解釋的,Apple 平台上實作rand() 函數的限制。使用預設參數時,rand() 使用的隨機數產生器會產生一個除以 14 時熵有限的序列,導致它僅在兩個值 6 和 13 之間循環。
要修正此問題,您可以採取以下步驟:
-
在Srand() 之後多次調用Rand():正如答案中所建議的,在呼叫srand(time(NULL)) 後丟棄rand() 產生的前幾個結果。透過這樣做,您可以消除僅產生 6 和 13 的初始循環。
-
使用不同的隨機數產生器:如果上述方法無法解決問題,請考慮切換到其他方法提供更好熵的隨機數產生器,例如 Mersenne Twister。您可以在 C 庫中找到替代隨機數產生器或作為單獨的實作。
-
修改隨機數的範圍:正如您在編輯中提到的,將 rand() 的範圍更改為 13或 15 允許其正常工作。這是因為 15(例如 752574)和 13(例如 220379)的乘數不能被它們各自的餘數整除。但是,更改範圍可能不適合您的特定用例,特別是如果您需要 0 到 13 之間的隨機數。
透過解決 Apple 平台上隨機數產生器的根本問題,您可以確保 rand() % 14 產生 0 到 13 之間分佈更均勻的值序列。
以上是為什麼 `rand() % 14` 在 Apple 平台上只產生 6 和 13?的詳細內容。更多資訊請關注PHP中文網其他相關文章!