0

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

谢谢

4

3 回答 3

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];
}
于 2013-06-23T13:52:33.627 回答
1

我建议您创建一个数组,并用数字 0 到 11 将其填充到一个循环中。在第二步中,您对该数组进行洗牌:什么是洗牌 NSMutableArray 的最佳方法?

于 2013-06-23T13:49:06.670 回答
-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 机器上

于 2013-06-23T13:53:45.690 回答