如何在Swift中随机化或混洗数组中的元素?例如,如果我的阵列由52张扑克牌,我想洗牌的阵列,以洗牌.
我有一个简单的数组,如:
var cellOrder = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
我想交换元素,比如假设第二个元素与第一个元素.
结果将是:
[2,1,3,4]
Run Code Online (Sandbox Code Playgroud)
我知道我们可以用exchangeObjectAtIndex用NSMutableArray,但我想用快捷阵列.有没有办法用swift [Int]数组做同样的事情?
我有一个像这样的数组:
var names: String = [ "Peter", "Steve", "Max", "Sandra", "Roman", "Julia" ]
Run Code Online (Sandbox Code Playgroud)
我想从该数组中获取3个随机元素.我是从C#来的,但是我很快就不知道从哪里开始.我想我应该首先将阵列洗牌,然后从中挑选前3个项目?
我尝试使用以下扩展名对其进行随机播放:
extension Array
{
mutating func shuffle()
{
for _ in 0..<10
{
sort { (_,_) in arc4random() < arc4random() }
}
}
}
Run Code Online (Sandbox Code Playgroud)
但它然后说"'()'在"shuffle()"的位置不能转换为'[Int]'".
为了挑选我使用的一些元素:
var randomPicks = names[0..<4];
Run Code Online (Sandbox Code Playgroud)
到目前为止看起来不错.
怎么洗牌?或者有没有人有更好/更优雅的解决方案?