Rand() % 14 ジェネレーターが制限された値を返す
最近のプログラムで、開発者は rand() % 14 という問題に遭遇しました。式は常に 6 または 13 の値しか生成しませんでした。コードを複数回実行しようとしたにもかかわらず、結果は一貫したままでした。問題は、Apple の MCG で使用される乱数生成器の性質にあります。
Wikipedia で説明されているように、MCG の乗数 16807 は 7 で割り切れます。これは、srand() の後に生成される最初の乱数が14 を法として取得した場合、エントロピーが 1 ビットしかないため、値の範囲が制限されます。この欠陥は、Apple が使用する低品質の乱数生成器が原因であると考えられます。
この問題の簡単な解決策は、srand() の後に rand() を数回呼び出し、最初の結果を破棄することです。これにより、生成された数値のエントロピーが強化され、出力される値が制限される問題が解決されます。
以上がApple の MCG で「rand() % 14」が限られた値を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。