0
random()
関数がランダムであり、[0, 1]
の範囲の値を返すと仮定します。この方法を使用する場合、結果のtrue
の値はアレイの方向に偏っていますか?固定量のランダムな真の値が偏っていることを保証するこの方法はありますか?
int chances = 16;
int guaranteed = 6;
boolean[] result = new boolean[chances];
for (int i = 0; i < result.length; i++) {
if (random() <= (float) guaranteed/chances) {
result[i] = true;
guaranteed--;
}
chances--;
}
コードのベンチマークを試しましたか?それは1000回実行し、結果が何かを参照してください。 –
あなたは正しいです。私の悪い。それはランダムであるように見えます。ありがとう。 – iHaveNoIdeaWhatImDoing
サイドノート: 'float'を使う理由がない限り、' double'を使います。 –