问题随机化Objective-C中的数字

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

Sha*_*rog 6

randomNum始终为0.0000000

那是因为你正在进行整数除法而不是浮点除法; (rand() / RAND_MAX)几乎总是为0.(练习给读者:什么时候不是0?)

这是解决这个问题的一种方法:

float randomNum = ((float)rand() / (float)RAND_MAX) * [items count];
Run Code Online (Sandbox Code Playgroud)

你也应该使用arc4random.


Ste*_*ani 5

试试这个:

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()