@interface NSMutableArray (Shuffling)
// 随机打乱元素次序
- (void)shuffle;
@end
@implementation NSMutableArray (Shuffling)
- (void)shuffle
{
NSUInteger count = [self count];
for (NSUInteger i = 0; i < count; ++i)
{
NSInteger nElements = count - i;
NSInteger n = (arc4random() % nElements) + i;
[self exchangeObjectAtIndex:i withObjectAtIndex:n];
}
}
@end这个算法的名字叫Fisher–Yates shuffle,
思路就是:
一: 0 和 0~n取的随机数 换
二: 1 和 1~n取的随机数 换
...
n: n 和 n 换
本文介绍了一种用于随机打乱NSMutableArray中元素顺序的方法——Fisher-Yates洗牌算法。该算法通过迭代的方式,每次从剩余未处理的元素中随机选取一个与当前元素进行交换,从而实现整个数组的随机化。
1254

被折叠的 条评论
为什么被折叠?



