1

ランダム化する配列があります。これを再現することはできませんでしたが、私のアプリのユーザーは、配列の要素の 1 つが 2 回発生し、別の要素がまったく発生しないという状況を経験したと報告しています。以下のロジックを見て、特定の状況でその問題を引き起こす可能性のあるものはありますか?

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 に答える