数组随机化逻辑可能的错误

时间:2013-01-29 10:25:55

标签: objective-c

我有一个随机化的数组。我无法重新生成这个,但是我的应用程序的用户报告说他遇到了阵列中的一个元素发生两次而另一个元素根本没有发生的情况。看看下面的逻辑,它在某些情况下可能会导致这个问题吗?

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];
}

1 个答案:

答案 0 :(得分: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];

}