取出范围arc4random()%x中的数字

时间:2014-02-12 22:13:55

标签: ios int arc4random

我使用arc4random生成一个随机数。我生成一个0到2之间的数字。这是游戏循环中颜色变化的标识符。如果该数字等于下一代的1 应排除数字1。 我怎么能这样做?

int x = arc4random()%3;

2 个答案:

答案 0 :(得分:1)

有两种主要方法可以做到这一点。

更简单但可能效率更低:

int x;
do {
    x = arc4random() % 3;
} while (x == 1);

或稍微复杂但更具确定性:

int x = arc4random() % 2;
if (x > 0) x++;

答案 1 :(得分:1)

排除它:

uint32_t identifier = 1; // << the number to exclude
uint32_t NIdentifiers = 1;
uint32_t NNumbers = 3;
uint32_t NPossibleIdentifiers = NNumbers - NIdentifiers;

uint32_t result = arc4random_uniform(NPossibleIdentifiers);
if (identifier == result)
 ++result;

注意:支持arc4random_uniform超过arc4random和模数。