我正在尝试在Xcode 5中创建一个NSMutableArray,我随机生成1到12之间的数字并将它们存储为整数。问题是有时会产生两次相同的数字,这是不可取的。
//Load array
NSMutableArray *theSequence = [[NSMutableArray alloc] init];
//Generate the Sequence
for (NSInteger i=0; i < difficultyLevel; i++) {
int r = arc4random()%12 + 1;
//Check here if duplicate exists
[theSequence addObject:[NSNumber numberWithInteger:r]];
}
其中difficultyLevel当前为4,因为应该存储4个整数。
我在Stack Overflow上尝试了其他答案但没有成功,是否有人能够在[theSequence addObject:..]之前定制某种循环,这样当我在标签中显示数字时它们是唯一的?提前谢谢!
哈利
答案 0 :(得分:2)
由于int
s的顺序无关紧要(无论如何都是随机的),用NSMutableSet
替换NSMutableArray
容器可以避免重复。您现在需要做的就是检查容器的大小,并在达到所需的四个大小时停止:
NSMutableSet *theSequence = [NSMutableSet set];
do {
int r = arc4random()%12 + 1;
[theSequence addObject:[NSNumber numberWithInteger:r]];
} while (theSequence.count != difficultyLevel);
注意:如果由于某种原因,插入顺序很重要,您可以使用NSMutableOrderedSet
。