【发布时间】:2011-12-13 14:00:53
【问题描述】:
这似乎是一个非常奇怪的问题:
这是我的代码:
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[])
{
@autoreleasepool {
srand((unsigned int)time(NULL));
int newRandomNumber = 0;
newRandomNumber = rand() % 7;
NSLog(@"%d", rand() % 7); //This prints out what I expected
NSLog(@"newRandomNumber = %d", newRandomNumber); // This always prints out 0!
}
return 0;
}
如果我替换那一行
newRandomNumber = rand() % 7
与
newRandomNumber = rand() % 8
一切都很完美。为什么会这样?
【问题讨论】:
-
无法在
C中重现您的问题。 -
我可以在 Objective-C 中重现这一点。即使是
srand([[NSDate date] timeIntervalSince1970])。但是将较小的整数传递给srand()似乎可以解决它。 -
如果你打印 rand() 会得到什么?你每次都得到相同的数字,还是只得到与 0 模 7 一致的数字?
-
您是否尝试过多次迭代?我猜第一个 rand() 值总是 7 的倍数。
标签: objective-c c random