[Swift]配列の要素からランダムに削除していき最後は配列を空にする

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と段々と配列の要素の数と共に減っていきます。



カテゴリー