She*_*lam 3 iphone random floating-point numbers objective-c
我试图生成一个介于0和我的数组大小之间的随机数:
float randomNum = (rand() / RAND_MAX) * [items count];
NSLog(@"%f",randomNum);
NSLog(@"%d",[items count]);
Run Code Online (Sandbox Code Playgroud)
randomNum始终为0.0000000
randomNum始终为0.0000000
那是因为你正在进行整数除法而不是浮点除法; (rand() / RAND_MAX)几乎总是为0.(练习给读者:什么时候不是0?)
这是解决这个问题的一种方法:
float randomNum = ((float)rand() / (float)RAND_MAX) * [items count];
Run Code Online (Sandbox Code Playgroud)
你也应该使用arc4random.
试试这个:
int randomNum = arc4random() % ([items count] +1);
Run Code Online (Sandbox Code Playgroud)
请注意,randomNum这不会作为数组引用.要做到这一点,你想要:
int randomRef = arc4random() % [items count];
id myRandomObject = [myArray objectAtIndex:randomRef];
Run Code Online (Sandbox Code Playgroud)
arc4random()返回一个u_int32_t(int),这使得它很容易转移到骰子,数组和其他现实问题之类的东西rand()