質問: Math.random(); if (r < 1.0d / 3.0d) { //処理1 } else if ( r < 2.0d / 3.0d) { //処理2 } else { //処理3 } としたとき、処理1~3は等確率になりますか。 想像では処理1のみ0.00...~...001(最小値?)だけ確率が高く起きそうなのですが。
回答: (int)(1000 * Math.random())をInteger.MAX_VALUE回行い、回数の(max - min) / maxを計算してみたところ全て0.4~0.5%でした。 直感だけで言えば今回の話では問題なさそうだと思うのですが、このあたりはよくわかっていないので、追々きっちり検討していこうと思います。 メルセンヌ・ツイスタ法の存在についても知ることができましたので、必要があればこちらを使おうと思います。 これで解決ということで回答を締め切らせて貰おうと思います。ありがとうございました。