0

私のアプリケーションでは、敵が倒されると弾薬がドロップされます。このコードには 4 種類の弾薬があります。弾薬の種類int diceRoll = arc4random() % 3; //0 to 3ごとに 25% の頻度でスポーンされます。たとえば、弾薬タイプ 2 をより頻繁にすることは可能ですか? たとえば、最大 40% なので、他の弾薬タイプは 20% になります。

4

2 に答える 2

1

やってみました:

int spaceSet = pow(10, 3); //range of 1000, the bigger the more noticible it gets 
int diceRoll = arc4random() % (spaceSet - 1);
if(diceRoll < (2 * (spaceSet / 10)))
    diceRoll = 0;
else if(diceRoll < (4 * (spaceSet / 10)))
    diceRoll = 1;
else if(diceRoll < (7 * (spaceSet / 10)))
    diceRoll = 2;
else
    diceRoll = 3;

ランダムのセットを増やして除算するのは良い考えのようです。

于 2013-03-03T11:28:17.093 に答える
0

注意...intdiceRoll = arc4random()%3は、0から2までの3つの異なる値を示します。これは次のようになります。

int i, diceRoll;
for (i=1;i<20;i++){
    diceRoll = arc4random() % 3;
    NSLog(@"Roll %i",diceRoll);
}

「%」は「除算したときの余り」を意味し、余りはありません3。

于 2013-03-03T13:06:56.253 に答える