1. ホーム
  2. arrays

[解決済み] 配列からランダムに要素を選ぶ

2022-04-19 02:48:06

質問

配列があり、ランダムに1つの要素を選びたいとします。

最も簡単な方法は何でしょうか?

わかりやすいのは array[random index] . しかし、もしかしたら、ruby の array.sample ? それとも、拡張機能を使ってそのようなメソッドを作ることができるのでしょうか?

どのように解決するのですか?

Swift 4.2以上

新しい推奨手法は、Collectionプロトコルの組み込みメソッドです。 randomElement() . これは、私が以前想定した空のケースを避けるために、オプショナルを返します。

let array = ["Frodo", "Sam", "Wise", "Gamgee"]
print(array.randomElement()!) // Using ! knowing I have array.count > 0

配列を作らず、count >0が保証されていない場合は、以下のようにする必要があります。

if let randomElement = array.randomElement() { 
    print(randomElement)
}

Swift 4.1 およびそれ以下

質問の答えですが、ランダムな配列選択を実現するために、このような方法をとることができます。

let array = ["Frodo", "sam", "wise", "gamgee"]
let randomIndex = Int(arc4random_uniform(UInt32(array.count)))
print(array[randomIndex])

鋳造品は醜いですが、他の誰かが別の方法を持っていない限り、必要なものだと思います。