我可以使用什么代码来确保没有任何两个或多个数字是相同的值。
一个集合没有重复的值,因此一种选择是将数字添加到集合中,直到集合的大小达到您想要的对象数量(在您的情况下为 6 个)。
NSMutableSet *set = [NSMutableSet set];
while ([set count] < 6) {
[set addObject:@((arc4random() % (hightestNumber-lowestNumber+1)) + lowestNumber)];
}
另一种选择是从现有列表中选择号码,删除您选择的每个号码:
NSArray *list = @[@5, @6, @7, @8, @9, @10, @11, @12, @13];
NSMutableArray *sourceList = [list mutableCopy];
NSMutableArray *finalList = [NSMutableArray array];
for (int i = 0; i < 6; i++) {
// (omitting code to choose a random index for brevity)
[finalList addObject:[sourceList objectAtIndex:randomIndex]];
[sourceList removeObjectAtIndex:randomIndex];
}
如果您从中选择的列表包含连续(或至少单调递增)的数字,则此方法可以很好地工作,因为这样可以很容易地保证源列表中的值是唯一的。