我正在检查一位同事在面试问题中给出的洗牌功能,以便洗牌。在我看来,原始索引卡#34;来自"将被删除和丢失。它被取消了,而不是被交换。我错过了什么吗?
func shuffle() {
var from = 0
var to = 0
for _ in cards {
from = Int(arc4random_uniform(UInt32(cards.count)))
to = Int(arc4random_uniform(UInt32(cards.count)))
cards.insert(cards.remove(at: from), at: to)
}
print("\nShuffled deck\n")
}
答案 0 :(得分:0)
Array
的{{1}}函数不只是从数组中删除一个项目;它还返回已删除的元素。上面的代码会立即将删除的元素传递给remove(at:)
,这会导致已删除的元素插入到其他位置。