【发布时间】:2010-11-17 06:42:48
【问题描述】:
我正在使用 NSArray/NSMutable 数组来存储不同的对象。 添加所有对象后,我想以随机顺序重新排列它们。 我该怎么做?
【问题讨论】:
我正在使用 NSArray/NSMutable 数组来存储不同的对象。 添加所有对象后,我想以随机顺序重新排列它们。 我该怎么做?
【问题讨论】:
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)];
}
【讨论】:
__OSX_AVAILABLE_STARTING(__MAC_10_7, __IPHONE_4_3)
然后在您的项目中链接 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)
}
【讨论】: