以随机顺序重新排列NSArray / MSMutableArray

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以随机顺序重新排列NSArray / MSMutableArray相关的知识,希望对你有一定的参考价值。

我正在使用NSArray / NSMutablearray来存储不同的对象。一旦添加了所有对象,我想以随机顺序重新排列它们。我该怎么做?

答案
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)];
}
另一答案

然后在你的项目中链接GameplayKit / GameplayKit.h

#import <GameplayKit/GameplayKit.h>

现在您可以使用属性shuffledArray。

NSArray *randomArray = [yourArray shuffledArray];
另一答案

斯威夫特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)
}

以上是关于以随机顺序重新排列NSArray / MSMutableArray的主要内容,如果未能解决你的问题,请参考以下文章

087-把PHP数组中的元素按随机顺序重新排列shuffle

NSArray 排序和隔离

重新加载数组并再次添加随机值以查看

随机文件顺序

重新排列火花列的顺序

shuffle函数打乱顺序有规律吗