我可以使用哪些代碼來確保沒有任何兩個或多個數字具有相同的值。
一個集合沒有重複的值,所以一個選項是將數字添加到一個集合,直到集合的大小達到您想要的對象數量(在您的情況爲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];
}
這種方法可以很好地工作,如果你從選擇列表包含連續的(或至少單調遞增)數字,因爲這可以很容易地保證源列表中的值是唯一的。
BOOL numberExist =([generatedNumbers filteredArrayUsingPredicate: NSPredicate ptedicateWithFormat:@「SELF ==%@」,newNumber]]。count> 0); – iiFreeman
在那種情況下最好使用NSIndexSet – iiFreeman