[Swift]配列の要素からランダムに削除していき最後は配列を空にする
エース・ジャック・クイーン・キングの4枚のカードが入っているボックス(配列)があると仮定します。
そこのボックスからランダムに1枚ずつカードを引いていく(配列から要素を削除していく)というコードを書いてみます。例題は何でもいいのですが、これがイメージしやすかいかと。
[Swift]配列の要素からランダムに削除していき最後は配列を空にする
func randomRemove() { var cardBox = ["ace", "jack", "queen", "king"] var cardsCount = cardBox.count for _ in cardBox { var randomNum = arc4random_uniform(UInt32(cardsCount)) cardBox.remove(at: Int(randomNum)) cardsCount -= 1 print(cardBox) } }
コード解説
配列の要素の数をcards.countで取得します。今回、用意したのは4つの要素が入っている配列ですね。
そこから、for in文で要素の数だけ回します。
毎回、ランダムな整数を要素の数内で生成→その数に合致した要素を取り除いていきます。
箱の中のカード(配列)は一つずつ減っていくので、randomNumは一周回るごとに配列の要素数をマイナス1していきます。
1周目は0~3の範囲内でランダムな数を出していましたが、2周目は0~2、3周目は0~1と段々と配列の要素の数と共に減っていきます。