/*
随机数学习
srand, rand(),random(),
arc4random()
srand函数是随机数发生器的初始化函数,原型 void srand(unsigned int seed)
srand和rand()配合使用产生的伪随机数序列。rand函数在产生随机数前,需要系统提供生成伪随机数序列的种子,rand根据这个种子的值产生一系列随机数,如果系统提供的种子没有变化,每次调用rand函数生成的伪随机数序列都是一样的。
srand(unsigned seed)通过参数seed改变系统提供的种子值,从而可以使得每次调用rand函数生成的伪随机数序列不同,从而实现真正意义上的“随机”。通常可以利用系统时间来改变系统的种子值,即srand(time(NULL)),可以为rand函数提供不同的种子值,进而产生不同的随机数序列
*/
// rand() random() 的初始化函数,如果不加,每次的随机数都和第一次一样
srand((unsigned)time(0)); //c++ 写法; 或者 用c语言的写法 srand((unsigned)time(NULL));
//1.rand()
for (NSInteger i = 0; i < 10; i++) {
NSInteger num = (long)rand()%10;
NSLog(@"随机数==1=====%ld",(long)num);
}
//2.random()
for (NSInteger i = 0; i < 10; i++) {
NSInteger num = (long)random()%10;
NSLog(@"随机数==2=====%ld",(long)num);
}
/*
rand()和random()实际并不是一个真正的伪随机数发生器,在使用之前需要先初始化随机种子,否则每次生成的随机数一样。
即rand()和random()在使用前必须用srand()随机化种子,这样才能每次随机的数都不一样
*/
//3.arc4random
for (NSInteger i = 0; i < 10; i++) {
NSInteger num = (long)arc4random()%10;
NSLog(@"随机数==3=====%ld",(long)num);
}
/*arc4random() 是一个真正的伪随机算法,不需要生成随机种子,因为第一次调用的时候就会自动生成。而且范围是rand()的两倍。
在iPhone中,RAND_MAX是0x7fffffff (2147483647),而arc4random()返回的最大值则是 0x100000000 (4294967296)。
精确度比较:arc4random() > random() > rand()。
*/