ios 有三種隨機(jī)數(shù)方法:
//第一種
srand((unsigned)time(0)); //不加這句每次產(chǎn)生的隨機(jī)數(shù)不變
int i = rand() % 5;
//第二種
srandom(time(0));
int i = random() % 5;
//第三種
int i = arc4random() % 5 ;
其中rand()和random()并不是一個(gè)真正的偽隨機(jī)數(shù)發(fā)生器创倔,在使用之前需要先初始化隨機(jī)種子轻姿,否則每次生成的隨機(jī)數(shù)一樣愉棱。
而arc4random() 是一個(gè)真正的偽隨機(jī)算法璧南,不需要生成隨機(jī)種子茶行,范圍是rand()的兩倍耸别。前兩種隨機(jī)數(shù)方法中返回的最大值RAND_MAX是0x7fffffff (2147483647)幔摸,而arc4random()返回的最大值則是 0x100000000 (4294967296)拒迅。
從精確度上來(lái)說(shuō),arc4random() > random() >= rand()卸察。
下面介紹兩個(gè)常用的隨機(jī)數(shù)生成方法:
// 生成隨機(jī)整數(shù)
- (int)getRandomInt:(int)from to:(int)to {
return (int)(from + (arc4random() % (to - from + 1)));
}
// 生成隨機(jī)浮點(diǎn)數(shù)
- (float)getRandomFloat:(float)from to:(float)to {
float diff = to - from;
return (((float) arc4random() / UINT_MAX) * diff) + from;
}
如生成1~100的隨機(jī)數(shù)脯厨,只需要調(diào)用
int a = [self getRandomInt:1 to:100];
要生成1.0~100.0的隨機(jī)浮點(diǎn)數(shù),只需要調(diào)用
int f = [self getRandomFloat:1.0 to:100.0];