这些随机数生成器之间的差异

时间:2014-01-30 22:18:43

标签: objective-c ios7 arc4random

我是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的统一版本。

帮助?

1 个答案:

答案 0 :(得分:1)

randIntrandInt3都会给出“min to(max + min)”范围内的值。 randInt3略胜一筹。

randInt2给出“min to max”范围内的值

randFloat给出一个“min到max”范围内的值作为浮点数。

randFloat2是错误的,并且总是会在“min to(某些非常小的数字,高于最小值”)的范围内给出一个值。

arc4random()/UINT32_MAX中的randFloat表达式的值介于0.0到1.0之间。