NSArrayの中身をシャッフルしたい
2012/08/05
nsarray
objective-c
アルゴリズム
カテゴリ
NSArrayの中身をシャッフルしたいということで、カテゴリを使って、機能の拡張を行ってます。
- objective c - What's the Best Way to Shuffle an NSMutableArray? - Stack Overflow
- svartalfheim.jp - 配列を少ない仕事量でシャッフルするFisher-Yates法
- Fisher–Yates shuffle - Wikipedia, the free encyclopedia
Fisher–Yates shuffle
ってものらしいです。まだためしてないから自信ないですが。
#import "NSMutableArray+Ext.h"
@implementation NSMutableArray (Ext)
- (void)shuffle
{
for (uint i = 0; i < self.count; ++i)
{
int nElements = self.count - i;
int n = arc4random_uniform(nElements) + i;
[self exchangeObjectAtIndex:i withObjectAtIndex:n];
}
}
@end
@implementation NSMutableArray (Ext)
- (void)shuffle
{
for (uint i = 0; i < self.count; ++i)
{
int nElements = self.count - i;
int n = arc4random_uniform(nElements) + i;
[self exchangeObjectAtIndex:i withObjectAtIndex:n];
}
}
@end
: