我想要一个包含 12 个数字的数组 - > 0 到 11 该数组必须是随机的,我不想有两次相同的数字
谢谢
听起来像是一个洗牌的问题。
只需声明一个如下所示的数组
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];
}
我建议您创建一个数组,并用数字 0 到 11 将其填充到一个循环中。在第二步中,您对该数组进行洗牌:什么是洗牌 NSMutableArray 的最佳方法?
您可以尝试以下方法:
NSMutableArray *array = [[NSMutableArray alloc] init];
for (int i = 0; i < 12; i++) {
int randomNumber = min + rand() % (max-min);
[array addObject:[NSNumber numberWithInt:randomNumber]];
}
不确定语法是否正确,我现在在 Windows 机器上