1

我有一个随机数组。我无法重现这一点,但我的应用程序的用户报告说,他遇到了这样一种情况,即数组中的一个元素出现了两次,而另一个元素根本没有出现。看看下面的逻辑,在某些情况下有什么可能导致这个问题的吗?

NSMutableArray *strArray = [NSMutableArray arrayWithCapacity:18];
[strArray addObjectsFromArray:tempNSArray];
int randomIndex, arrayCount = [strArray count];
for (int i = 0; i < arrayCount; i++) {
    randomIndex = arc4random() % arrayCount;
    [strArray exchangeObjectAtIndex:i withObjectAtIndex:randomIndex];
}
4

1 回答 1

1

尝试使用数组 tempNSArray 的内容创建新的 NSMutableArray,当您选择一个随机对象时将其删除,直到新的 NSMutableArray 为空。试试这个代码:

NSMutableArray *strArray = [[NSMutableArray alloc]init];
NSMutableArray *tempMutableArray=[[NSMutableArray alloc]initWithArray:tempNSArray];

int randomIndex;
while ([tempMutableArray count]=!0){
    randomIndex = arc4random() % [tempMutableArray count];
    [strArray addObject:[tempMutableArray objectAtIndex:randomIndex]];
    [tempMutableArray removeObjectAtIndex:randomIndex];

}
于 2013-01-29T19:52:24.380 回答