2012-10-27 53 views
-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; 
} 

有时候,改变很少,它会返回像1243512数字时最小是像1,最大是像9

正如你可以看到,我试图阻止它,但在我尝试此修复后,它现在又发生在我身上了。

我该如何解决这个问题?

感谢

编辑我使用srandom(时间(NULL));在当前的cocos2d场景init

+0

我刚刚在一个循环中运行你的发生器10,000次,最小设置为1,最大设置为9,从不产生9以上的结果。可能是你输入的数字不是整数? –

回答

2

我不确定是什么导致你的问题,但我强烈建议使用random()或arc4random()而不是rand()。他们产生好得多的随机数。