我是objective-c的新手,我想知道这些随机数生成器之间的区别:
int randInt(int min, int max)
{
return ((arc4random() % max) + min);
}
int randInt2(int min, int max)
{
return (arc4random() % (max - min + 1)) + min;
}
int randInt3(int min, int max)
{
return (arc4random_uniform(max) + min);
}
float randFloat(float min, float max)
{
return (float)arc4random()/UINT32_MAX * (max - min) + min;
}
float randFloat2(float min, float max)
{
return (float)arc4random_uniform(max)/UINT32_MAX * (max - min) + min;
}
换句话说,我想知道为什么有人会选择randInt而不是randInt2,反之亦然。 randInt3好吗?
我也想知道为什么我需要将UINT32_MAX除以randFloat,以及我是否正确使用了arc4random的统一版本。
帮助?
答案 0 :(得分:1)
randInt
和randInt3
都会给出“min to(max + min)”范围内的值。 randInt3
略胜一筹。
randInt2
给出“min to max”范围内的值
randFloat
给出一个“min到max”范围内的值作为浮点数。
randFloat2
是错误的,并且总是会在“min to(某些非常小的数字,高于最小值”)的范围内给出一个值。
arc4random()/UINT32_MAX
中的randFloat
表达式的值介于0.0到1.0之间。