用随机数填充数组彼此不同?

时间:2013-06-23 13:45:23

标签: ios objective-c

我想要一个包含12个数字的数组 - > 0到11 数组必须是随机的,我不希望有两倍相同的数字

感谢名单

3 个答案:

答案 0 :(得分:2)

听起来像是一个洗牌问题。

只需声明一个如下的数组

NSMutableArray * numbers = [NSMutableArray array];
for (int i = 0; i < 12; i++) {
    [numbers addObject:@i];
}

然后,您可以使用Fisher-Yates算法

对该数组进行随机播放
for (NSUInteger i = numbers.count - 1; i > 0; --i) {
    NSUInteger n = arc4random_uniform(i+1);
    [numbers exchangeObjectAtIndex:i withObjectAtIndex:n];
}

答案 1 :(得分:1)

我建议你创建一个数组并将其填入一个数字为0到11的循环中。在第二步中,你将该数组洗牌:What's the Best Way to Shuffle an NSMutableArray?

答案 2 :(得分:-1)

您可以尝试以下方式:

NSMutableArray *array = [[NSMutableArray alloc] init];   

    for (int i = 0; i < 12; i++) {

        int randomNumber = min + rand() % (max-min);
        [array addObject:[NSNumber numberWithInt:randomNumber]];  

    }

不确定语法是否正确,我现在在Windows机器上