0

0 から 25 までの 3 つの乱数を生成しようとしています。これに使用arc4random_uniform(25)すると、3 つの乱数が生成されます。

4

3 に答える 3

1
int checker[3];
for(int i = 0 ; i < 3 ; i++){
    checker[i] = 0;
}
for(int i = 0 ; i < 3 ; i++){
    random = arc4random() % 3;
    while(checker[random] == 1){
        random = arc4random() % 20;
    }
    checker[random] = 1;
    NSLog(@"random number %d", random);
}
于 2013-12-04T09:26:29.833 に答える
1

@Thiloが言ったように、それらがランダムであることを確認し、そうでない場合は繰り返す必要があります:

// This assumes you don't want 0 picked
u_int32_t numbers[3] = { 0, 0, 0 };
for (unsigned i = 0; i < 3; i++)
{
    BOOL found = NO;
    u_int32_t number;
    do
    {
        number = arc4random_uniform(25);
        if (i > 0)
            for (unsigned j = 0; j < i - 1 && !found; j++)
                found = numbers[j] == number;
    }
    while (!found);
    numbers[i] = number;
}
于 2012-08-21T07:09:41.137 に答える