iOS - Diceroll增加一个对象的频率

时间:2013-03-03 11:17:17

标签: ios xcode cocos2d-iphone

在我的应用程序中,当敌人被杀时弹药被丢弃。此代码int diceRoll = arc4random() % 3; //0 to 3有4种不同类型的弹药。每种弹药类型现在的生成频率为25%。是否有可能使例如弹药类型2变得更频繁?例如高达40%,因此其他弹药类型将是20%

2 个答案:

答案 0 :(得分: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;

增加随机和分割它似乎是一个好主意。

答案 1 :(得分:0)

小心... int diceRoll = arc4random()%3给出3个不同的值:0到2,如下所示:

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

“%”表示“除以时的余数”,并且没有剩余3。