我使用arc4random生成一个随机数。我生成一个0到2之间的数字。这是游戏循环中颜色变化的标识符。如果该数字等于下一代的1 应排除数字1。 我怎么能这样做?
int x = arc4random()%3;
答案 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
和模数。