2013-05-17 45 views
0

我有一段代码给我带来一些麻烦并且令人困惑。Objective C随机数

下面是一段代码...

int r = rand() % 100; 
printf("Random number: %u", r); 

为什么它打印7每一次?根据这本书,它应该打印任何数字0-100我相信...我错了吗?

+0

删除了无关信息。请关注这个问题。 – vikingosegundo

+0

@qegal这不是重复的这个问题。它没有解释在这里被问到的结果。 – rmaddy

+0

@rmaddy - 的确如此。无论如何可以废除接近的选票吗? – pasawaya

回答

10

你必须先播种它:

srandom(time(NULL)); 

它实际上是更好地只使用arc4random

int r = arc4random() % 100; 
printf("Random number: %u", r); 
+0

啊...谢谢你的成功,为什么arc4random更好?只是偏好还是代表只是更好? –

+0

还是这样更简单?感谢您的快速回答。 –

+5

'srandom '用于播种'random',使用'srand'播种'rand',当你将结果应用模数时(比如在这里完成),最好使用'arc4random_uniform'而不是'arc4random'。 – rmaddy

2

随机数是伪随机的。为了让它们显得随意,它们根据您的设计在任意时间播种。如果您希望播种和“随机”数字生成同时发生,请改为使用arc4random,这也提供了其他好处。