Ios 在index0处随机移动NSMUTABLEARRY例外项
有一个NSMutableArray,当我的用户按下一个按钮时,我希望数组中的所有项目都随机改变位置!!除了第一个 现在我有Ios 在index0处随机移动NSMUTABLEARRY例外项,ios,objective-c,Ios,Objective C,有一个NSMutableArray,当我的用户按下一个按钮时,我希望数组中的所有项目都随机改变位置!!除了第一个 现在我有 -(void)shufflemyList{ NSLog(@"Un Shuffled array : %@",myList); NSMutableArray *array = [NSMutableArray arrayWithCapacity:0]; while ([myList count] > 0) { int index = arc4random() %
-(void)shufflemyList{
NSLog(@"Un Shuffled array : %@",myList);
NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];
while ([myList count] > 0)
{
int index = arc4random() % [myList count];
id objectToMove = [myList objectAtIndex:index];
[array addObject:objectToMove];
[myList removeObjectAtIndex:index]; }
// test
NSLog(@"Shuffled array : %@",array);
myList=array; }
这可以完全洗牌列表。
除了第一项之外,有没有办法将整个列表洗牌?只需添加两行即可
-(void)shufflemyList{
NSLog(@"Un Shuffled array : %@",myList);
NSMutableArray *array = [NSMutableArray arrayWithCapacity:0];
// new code ---
[array addObject:myList[0]];
[myList removeObjectAtIndex:0];
// ---
while ([myList count] > 0)
{
int index = arc4random() % [myList count];
id objectToMove = [myList objectAtIndex:index];
[array addObject:objectToMove];
[myList removeObjectAtIndex:index]; }
// test
NSLog(@"Shuffled array : %@",array);
myList=array; }
此外,最好使用“arc4random_uniform(n)”而不是“arc4random()%n”。从文档:
arc4random_uniform()将返回均匀分布的随机数
小于上界。arc4random_uniform()建议在
类似于“`arc4random()%上限”的构造,因为它避免了“模”
偏差“当上限不是二的幂时
这个话题对你来说可能会很有趣。这很有效!杀手!万分感谢!