20%の偏差はかなり大きいように見えますが、統計的に異常であるかどうかを確認するには、訓練を受けた統計家に相談する必要があります。
更新-そして答えは、それが必ずしも異常ではないということです。統計では、このような外れ値が約0.3%の確率で発生すると予測されています。
このような結果が乱数ジェネレーターによって引き起こされることは確かにもっともらしいです。このRandomクラスは単純な「線形合同」アルゴリズムを使用しており、このクラスのアルゴリズムは強力に自己相関しています。乱数の使用方法によっては、アプリケーションレベルで異常が発生する可能性があります。
これが問題の原因である場合は、暗号強度の乱数ジェネレーターに置き換えてみてください。については、javadocsを参照してくださいSecureRandom。 SecureRandomよりも高価ですがRandom、これによってユースケースに違いが生じる可能性はほとんどありません。
一方、これらの外れ値が実際に理論で予測された速度で発生している場合は、乱数ジェネレーターを変更しても違いはありません。
これらの外れ値が本当に厄介な場合は、別のアプローチを取る必要があります。N個のランダムな選択肢を生成する代わりに、必要な比率でfalse / trueのリストを生成してから、リストをシャッフルします。例:を使用しCollections.shuffleます。