我已经读过它与时间有关,你也可以从包含time.h开始,所以我假设了很多,但它是如何工作的呢?此外,它是否有任何倾向于奇数或偶数或类似的东西?最后是在C标准库或Foundation框架中有更好的分发吗?
答案 0 :(得分:20)
答案 1 :(得分:10)
rand
返回pseudo-random number generator(PRNG)生成的数字。它返回的数字序列是确定性的,基于PRNG初始化的值(通过调用srand
)。
应该分配数字使得它们看起来有些随机,因此,例如,奇数和偶数应该以大致相同的频率返回。随机数生成器的实际实现未指定,因此实际行为特定于实现。
要记住的重要一点是rand
不会返回随机数;它返回伪随机数,它返回的值由种子值和调用rand
的次数决定。此行为适用于许多用例,但不适合其他用例(例如,rand
不适合在许多加密应用程序中使用)。
答案 2 :(得分:1)
rand()如何运作?
http://en.wikipedia.org/wiki/Pseudorandom_number_generator
我已经读到它有一些东西要做 随着时间的推移,你也得到了 包括time.h
rand()
与时间毫无关系。但是,使用time()
来获取PRNG的“种子”是很常见的,这样每次运行程序时都会得到不同的“随机”数字。
此外,它有任何倾向 对于奇数或偶数或 类似的东西?
取决于使用的确切方法。 rand()
有一个流行的实现,在奇数和偶数之间交替。因此,请避免编写rand() % 2
之类的代码,这些代码取决于最低位是随机的。