33 lines
735 B
Objective-C
33 lines
735 B
Objective-C
// NSMutableArray_Shuffling.h
|
|
|
|
#if TARGET_OS_IPHONE
|
|
#import <UIKit/UIKit.h>
|
|
#else
|
|
#include <Cocoa/Cocoa.h>
|
|
#endif
|
|
|
|
// This category enhances NSMutableArray by providing
|
|
// methods to randomly shuffle the elements.
|
|
@interface NSMutableArray (Shuffling)
|
|
- (void)shuffle;
|
|
@end
|
|
|
|
|
|
// NSMutableArray_Shuffling.m
|
|
|
|
#import "NSMutableArray_Shuffling.h"
|
|
|
|
@implementation NSMutableArray (Shuffling)
|
|
|
|
- (void)shuffle
|
|
{
|
|
NSUInteger count = [self count];
|
|
for (NSUInteger i = 0; i < count; ++i) {
|
|
// Select a random element between i and end of array to swap with.
|
|
NSInteger nElements = count - i;
|
|
NSInteger n = (arc4random() % nElements) + i;
|
|
[self exchangeObjectAtIndex:i withObjectAtIndex:n];
|
|
}
|
|
}
|
|
|
|
@end |