可能重复:
iPhone: random() function gives me the same random number everytime
我正在为一个我正在研究的大型项目编写一个测试iPhone应用程序,它将涉及随机字符串,数字等。当我使用rand()
或random()
函数时,每次我得到随机数和字符串,但顺序相同!我知道编译器在编译时确定顺序,但不希望这样。我希望它是完全随机的,所以每次不同的东西不仅仅是预定的列表。我尝试过的是一个循环,它可以向上和向下计数以尝试从中获取值,但它不起作用。
答案 0 :(得分:3)
编译器不生成随机字符串;它们是在运行时生成的。但它们是基于初始种子生成的;对于给定的种子值,您将获得相同的数字序列。您需要在运行时根据系统时间,正常运行时间,用户点击次数等选择种子。
答案 1 :(得分:1)
您需要为rand播种数字。这样每次都是随机的!
这是我的意思的一个例子:
// Seed number for rand()
srand((unsigned int) time(0) + getpid());
在使用rand()
之前添加上面的代码行答案 2 :(得分:1)
随机数生成器永远不会真正“随机”,而是根据应始终不同的内容生成数字。为随机数生成器提供一个唯一值,以便它可以生成随机数,这被称为“播种”。对于rand()
,您需要使用srand(time(NULL))
对其进行播种。对于random()
,与srandom()
的处理方式相同。有一些适用于iOS的功能,例如arc4random()
,它是自播种的。例如,要生成最多(但不包括)10的随机数,您可以使用arc4random()
,如下所示:
int random = arc4random() % 10;