-1

この関数から非常に奇妙な数値が得られます。

-(int)generateRandomNumber:(int)min:(int)max {
    int i = rand() % ((max + 1)- min) + min;
    if(i < min || i > max) {
        NSLog(@"WEIRD RANDOM CASE JUST HAPPENED");
        return [self generateRandomNumber:min:max];
    }
    return i;
}

めったに変化しないことがありますが、最小値が 1 で最大値が 9 の場合、1243512 のような数値が返されます。

ご覧のとおり、停止しようとしましたが、この修正を試みた直後に再び発生しました。

どうすればこれを修正できますか?

ありがとう

編集私は srandom(time(NULL)); を使用しています。現在の cocos2d シーンでinit

4

1 に答える 1

2

問題の原因はわかりませんが、rand() の代わりに random() または arc4random() を使用することを強くお勧めします。それらははるかに優れた乱数を生成します。

于 2012-10-27T06:50:56.790 に答える