开发者

Re-arrange NSArray/MSMutableArray in random order

开发者 https://www.devze.com 2023-01-25 17:48 出处:网络
I\'m using NSArray/NSMutable array to store different objects. Once all the objects are added, I want to re-开发者_StackOverflow社区arrange them in random order.

I'm using NSArray/NSMutable array to store different objects. Once all the objects are added, I want to re-开发者_StackOverflow社区arrange them in random order. How can I do it?


NSUInteger count = [yourMutableArray 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 = (arc4random() % nElements) + i;
   [yourMutableArray exchangeObjectAtIndex:i withObjectAtIndex:n];
}


// the Knuth shuffle
for (NSInteger i = array.count-1; i > 0; i--)
{
    [array exchangeObjectAtIndex:i withObjectAtIndex:arc4random_uniform(i+1)];
}


Link GameplayKit/GameplayKit.h in your project then

#import <GameplayKit/GameplayKit.h>

Now you can use the property shuffledArray.

NSArray *randomArray = [yourArray shuffledArray];


Swift 4

let count = self.arrayOfData.count
for (index, _) in self.arrayOfData.enumerated()
{
  let nTempElement = count - index
  let swapIndexwith = (Int(arc4random()) % nTempElement) + index
  arrayOfData.swapAt(index, swapIndexwith)
}
0

精彩评论

暂无评论...
验证码 换一张
取 消