1

ゲームにパワーアップを実装しました。ゾンビを倒したときに 10% の確率でプレイヤーに適用されるようにしたいと考えています。プレイヤーの弾丸がゾンビに当たるたびにこのコードを使用しようとしましたが、実際には機能しません。

double rand = Math.random() * 10 + 1;
if(rand == 1){
    power.setShrink(true);
}

if ステートメントの外側に設定すると、プレーヤーが縮小されるため、パワーアップが機能することはわかっています。

ゾンビが殺されたときに効果がプレイヤーに適用される確率が 10% になるようにするにはどうすればよいですか?

4

3 に答える 3

2

double は浮動小数点数です。あなたの場合、それは 1 から 11 までの任意の数値、最大で約 53 バイナリ桁の精度です。したがって、1 になるだけでなく、1.01、1.02 などになることもあります。したがって、正確に 1 である可能性は無視できます。

Random.nextIntランダムな整数を生成する場合は、より良い結果が得られます。

Random r = new Random(); //only do this once

if(r.nextInt(10) == 0){
    power.setShrink(true);
}
于 2013-04-28T12:55:47.573 に答える
1

簡単なモンテカルロ選択を使用できます。

if(Math.random() > 0.9){
   power.setShrink(true);
}

これにより、10 分の 1 の確率でパワーアップがトリガーされる可能性がランダムに与えられます。

于 2013-04-28T12:53:29.470 に答える
0

Random.nextInt(10)同様のロジックで使用できます。

あなたの現在のコードは失敗していdoubleます1

于 2013-04-28T12:54:26.617 に答える