Iphone 在objective-c中洗牌数组

Iphone 在objective-c中洗牌数组,iphone,ios,ipad,nsmutablearray,nsarray,Iphone,Ios,Ipad,Nsmutablearray,Nsarray,可能重复: 我为iphone/iPad开发应用程序。我想洗牌存储在NSArray中的对象。有没有办法用objective-c实现它?看看这是否有帮助 您也可以看到前面的SO问题向NSMutableArray添加一个类别,使用- //NSMutableArray\u Shuffling.h #如果目标是IPHONE #进口 #否则 #包括 #恩迪夫 //此类别通过提供 //方法随机洗牌元素。 @接口NSMutableArray(洗牌) -(无效)洗牌; @结束 //NSMutableArray_

可能重复:

我为iphone/iPad开发应用程序。我想洗牌存储在NSArray中的对象。有没有办法用objective-c实现它?

看看这是否有帮助


您也可以看到前面的SO问题

向NSMutableArray添加一个类别,使用-

//NSMutableArray\u Shuffling.h
#如果目标是IPHONE
#进口
#否则
#包括
#恩迪夫
//此类别通过提供
//方法随机洗牌元素。
@接口NSMutableArray(洗牌)
-(无效)洗牌;
@结束
//NSMutableArray_Shuffling.m
#导入“NSMutableArray_Shuffling.h”
@NSMutableArray的实现(洗牌)
-(无效)洗牌
{
静态布尔种子=否;
如果(!种子)
{
种子=是;
srandom(时间(空));
}
NSU整数计数=[自计数];
对于(整数i=0;i
谢谢你,这是一个关于此信息的voteup。它是重复数组元素。复制其他人的答案不是一个好做法:请注意,原始答案已得到改进,因此请使用它,而不是原始答案的旧副本。看见
//  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
{

  static BOOL seeded = NO;
  if(!seeded)
  {
    seeded = YES;
    srandom(time(NULL));
  }

    NSUInteger count = [self count];
    for (NSUInteger i = 0; i < count; ++i) {
        // Select a random element between i and end of array to swap with.
        int nElements = count - i;
        int n = (random() % nElements) + i;
        [self exchangeObjectAtIndex:i withObjectAtIndex:n];
    }
}

@end