Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 如何比较一组数字并确保所有值都不相同?_Objective C_Numbers_Compare_Arc4random - Fatal编程技术网

Objective c 如何比较一组数字并确保所有值都不相同?

Objective c 如何比较一组数字并确保所有值都不相同?,objective-c,numbers,compare,arc4random,Objective C,Numbers,Compare,Arc4random,我随机生成6个数字,使用 我对所有六个数字都这样做,但有些数字的结果是相同的。我可以使用什么代码来确保没有任何两个或更多的数字是相同的值。我打算使用if语句将该数字与所有六个数字进行比较,然后再次调用arc4random代码,但有可能再次得到另一个数字的相同值,之后我必须再次测试它。我真的被这件事难住了。谢谢你的帮助 我可以使用什么代码来确保没有任何两个或更多的数字是相同的值 一个集合没有重复的值,因此一个选项是向集合中添加数字,直到集合的大小达到您想要的对象数6为止 NSMutableSet

我随机生成6个数字,使用

我对所有六个数字都这样做,但有些数字的结果是相同的。我可以使用什么代码来确保没有任何两个或更多的数字是相同的值。我打算使用if语句将该数字与所有六个数字进行比较,然后再次调用arc4random代码,但有可能再次得到另一个数字的相同值,之后我必须再次测试它。我真的被这件事难住了。谢谢你的帮助

我可以使用什么代码来确保没有任何两个或更多的数字是相同的值

一个集合没有重复的值,因此一个选项是向集合中添加数字,直到集合的大小达到您想要的对象数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];
}
如果要从中选择的列表包含连续的或至少是单调递增的数字,则此方法可以很好地工作,因为这样可以很容易地保证源列表中的值是唯一的

我可以使用什么代码来确保没有任何两个或更多的数字是相同的值

一个集合没有重复的值,因此一个选项是向集合中添加数字,直到集合的大小达到您想要的对象数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];
}

如果您选择的列表包含连续或至少单调递增的数字,则此方法可以很好地工作,因为这样可以很容易地保证源列表中的值是唯一的。

除了Caleb的优秀建议,如果范围相对较小,您可以创建一个包含所有枚举值的数组,然后选择前6个。

除了Caleb的优秀建议外,如果范围相对较小,您可以创建一个包含所有枚举值的数组,然后选择前6个。

BOOL numberExist=[generatedNumbers filteredArrayUsingPredicate:[NSPredicate PteIndicateWithFormat:@SELF==%@,newNumber]]计数>0;在这种情况下,最好使用NSIndexSet布尔数目列表=[generatedNumbers filteredArrayUsingPredicate:[NSPredicate PteIndicateWithFormat:@SELF==%@,newNumber]].count>0;在这种情况下使用NSIndexSet可能更好这非常有效谢谢!我使用了NSMutableSet。我从来没有两次得到相同的数字。非常感谢您的帮助。@LostatseJoshua很乐意提供帮助。如果您单击我的答案旁边的复选标记或其他复选标记,如果您愿意,它将标记已回答的问题,以便其他人不会花费时间关于这个问题。我希望我能投票支持你的答案,但我的声誉已经够高了!很抱歉。这非常有效。谢谢你!我使用了NSMutableSet。我从来没有两次得到相同的数字。非常感谢你的帮助。@lostatseJoshua很乐意帮助。如果你单击我答案旁边的复选标记或其他复选标记,如果你愿意,它会将问题标记为a我希望我能投票支持你的答案,但我的声誉已经够高了!对此我深表歉意。