#import <Foundation/Foundation.h>
@interface NSArray (DERandomization)
+ (NSArray *)randomArrayFromArray:(NSArray *)sortedArray;
@end
#import "NSArray+DERandomization.h"
@implementation NSArray (DERandomization)
+ (NSArray *)randomArrayFromArray:(NSArray *)sortedArray {
NSMutableArray *toRandomize = [sortedArray mutableCopy];
NSMutableArray *randomArray = [[[NSMutableArray alloc] init] autorelease];
NSUInteger arraySize = toRandomize.count;
NSUInteger randomIndex;
while(arraySize > 0) {
//Grab a random object from toRandomize and place it in first index of randomArray
randomIndex = arc4random() % arraySize;
[randomArray insertObject:[toRandomize objectAtIndex:randomIndex] atIndex:0];
[toRandomize removeObjectAtIndex:randomIndex];
arraySize = toRandomize.count;
}
[toRandomize release];
return randomArray;
}
@end
使用Objective-C实现随机数组的高效算法
本文详细介绍了如何使用Objective-C语言实现一个高效的随机数组生成算法,通过选择一个随机元素并将其移动到数组的开头,从而创建一个随机排列的数组。此方法避免了直接对数组进行排序操作,提高了效率。
646

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



