我有一个非常简单的iPhone应用程序,需要1-100的随机整数。
我有一个调用随机数函数的按钮,然后显示它。
-(IBAction)buttonReleased;
{
srandom(time(NULL));
int theNum = random() % 100 + 1;
numberDisplay.text = [NSString stringWithFormat:@"%d", theNum];
}
问题是,如果我快速按下按钮,有时候它不会显示新的随机数。
答案 0 :(得分:8)
问题是你正在使用time
播种。
time
每秒更新一次,所以如果你在第二秒内点击它,你将使用相同的数字为生成器播种,这意味着你将获得相同的数字。
你应该只在申请开始时播种一次。
答案 1 :(得分:3)
srandom(time(NULL));
每次生成随机数时都不要这样做。当您的申请开始时,请执行一次。
原因:每当您使用特定号码呼叫srandom()
时,您将从random()获得相同的伪随机数序列。因此,如果您在同一秒内调用您的函数两次,您将得到相同的数字。