Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonでリストからランダムに要素を選択する方法:random.choice()徹底解説

Pythonのrandom.choice()メソッドは、リストからランダムに1つの要素を選んで返します。このメソッドは、任意のデータ型の要素を含むリストに対して使用でき、引数として「要素を選びたいリスト」を1つだけ受け取ります。

リストの中からアイテムをランダムに選びたい場面は、開発においてよく登場します。例えば、色当てゲームを作っている場合、ユーザーが当てるべき色を候補リストからランダムに決めたいことがあるでしょう。

Pythonでランダム選択を実装するには、random.choice()関数とrandom.choices()関数を使用します。前者はシーケンスから1つのランダムな要素を取得し、後者は複数のランダムな要素を取得できます。

本記事では、Pythonのrandomライブラリの基礎を具体例とともに解説し、random.choice()メソッドを使ってリストからランダムな要素を取得する方法を紹介します。

Pythonのrandomモジュールとは

Pythonのrandomモジュールを使うと、乱数に関連するさまざまな関数にアクセスできます。

このモジュールの最も一般的な用途のひとつが乱数の生成です。これはrandint()関数で実現できます。また、モジュールにはchoice()関数も用意されており、リストからランダムに1つのアイテムを選ぶことが可能です。

さらに、randomモジュールにはchoices()関数もあり、リストから複数のランダムな選択肢を一度に返すこともできます。

randomライブラリが活躍するアプリケーションの例をいくつか挙げてみましょう。

  • ランダムな数字をピックアップするツール
  • 色のリストからランダムに色を1つ選ぶツール
  • デッキからランダムにカードを1枚引くツール
  • コイン投げをシミュレートするアプリ

randomライブラリの関数を使い始める前に、まずコードにライブラリをインポートする必要があります。インポートは以下の1行で完了します。

import random

Python random.choice()の使い方

Pythonのrandom.choice()関数は、シーケンスからランダムな要素を1つ返します。引数には、ランダムな要素を取得したいリストを指定します。戻り値は常に1つです。

この関数の構文は以下の通りです。

random.choice(sequence)

random.choice()メソッドは任意のデータ型のアイテムを返せます。つまり、リストからJSONオブジェクトを返すこともあれば、数値を返すこともあります。

それでは、random.choice()メソッドの動作を、実際の例で確認していきましょう。

random.choice()の実行例

ここでは、お気に入りの曲リストからランダムに1曲を選んでくれるアプリケーションを作成します。「何を聴こうかな?」と悩む時間をなくしてくれる、便利なアプリです。

まず、お気に入りの曲のリストを定義しましょう。

favorite_songs = ["Ring of Fire", "9 to 5", "Come on Eileen", "Everybody Wants to Rule the World"]

このリストには4曲が含まれています。次に、random.choice()を使って、このリストからランダムに1曲を選択します。コード全体は以下のようになります。

import random 

favorite_songs = ["Ring of Fire", "9 to 5", "Come on Eileen", "Everybody Wants to Rule the World"]

song_to_play = random.choice(favorite_songs)
print("再生する曲:", song_to_play)

プログラムの動作を確認するため、3回実行してみましょう。それぞれの実行結果は以下の通りです。

再生する曲: Ring of Fire
再生する曲: Come on Eileen
再生する曲: Ring of Fire

random.choice()メソッドのおかげで、お気に入りの曲リストから毎回異なる曲をランダムに選べるようになりました。

コードの内容を順番に見ていきます。まず、randomモジュールをインポートしました。このモジュールには、後ほど使うchoice()関数が含まれています。次に、選択元となるお気に入りの曲リストを変数として宣言しました。

その後、choice()メソッドでリストからランダムに1曲を選び、その結果を変数「song_to_play」に代入しています。最後に、「再生する曲:」というラベルとともに、ランダムに選ばれた曲名をコンソールへ出力します。

random.choices()で複数の要素をランダムに取得する

ここまでは、random.choice()メソッドでリストから1つの要素だけを選択してきました。では、複数の要素をランダムに選びたい場合はどうすればよいのでしょうか。

そのようなときに役立つのが、random.choices()メソッドです。このメソッドを使うと、リストから1つ以上のランダムな選択肢を取得できます。choices()メソッドの構文は以下の通りです。

random.choices(sequence, weights=None, cum_weights=None, k=選択する個数)

choices()メソッドが受け取る主なパラメータは以下の通りです。

  • sequence: ランダムにアイテムを選びたい元のシーケンス。文字列、リスト、タプルなどを指定できます。
  • weights: 各値が出現する確率(重み)を指定するリスト。
  • cum_weights: 各値の累積重みを指定するリスト。
  • k: シーケンスから選びたいランダムな要素の個数。

本記事の例では、特に重要な「sequence」と「k」の引数に焦点を当てて解説します。

random.choices()の実行例

今度は、お気に入りの曲リストからランダムに3曲を選び、新しいプレイリストに追加したいとしましょう。

このタスクを実現するプログラムは以下の通りです。

import random 

favorite_songs = ["Ring of Fire", "9 to 5", "Come on Eileen", "Everybody Wants to Rule the World"]

songs_to_play = random.choices(favorite_songs, k=3)

for s in songs_to_play:
    print(s)

このコードを実行すると、以下のような出力が得られます。

Come on Eileen
9 to 5
Ring of Fire

処理の流れを確認しましょう。まず、randomライブラリをコードにインポートし、次に「favorite_songs」という変数にお気に入りの曲リストを格納しました。

続いて、random.choices()メソッドを使ってリストから3曲をランダムに選択しています。このメソッドは、選ばれた曲を要素とする新しいリストを返します。

最後に、Pythonのforループでランダムに生成された曲リストの各要素を取り出し、コンソールに1曲ずつ出力しました。ご覧の通り、コードはランダムに選ばれた3曲のリストを正しく返しています。

重複なしで選びたい場合はrandom.sample()が便利

random.choices()は同じ要素が重複して選ばれることがあります(復元抽出)。もし重複なしで複数の要素を取得したい場合は、random.sample()関数を使用するとよいでしょう。使い方はrandom.sample(リスト, k=個数)となり、リスト内の各要素を1回ずつしか選びません。

また、空のリストに対してrandom.choice()random.choices()を実行するとエラーになるため、事前にリストが空でないかを確認しておくと安全です。

まとめ

random.choice()メソッドはリストからランダムに1つのアイテムを選択し、random.choices()メソッドはリストから複数のアイテムをランダムに選択します。どちらのメソッドも、別のリストや数値など、任意のデータ型の値を返せる点が特徴です。

本記事では、具体例を交えながら、これらのメソッドを使ってリストからランダムな要素を取得する方法を解説しました。これであなたも、Pythonのプロのようにランダム選択を自在に使いこなせるはずです!

  1. PythonでHello Worldを表示する方法:初心者向けステップバイステップガイド

    Pythonの「Hello World」プログラムは、多くのプログラマーが最初に書くプログラムです。print文を使って文字列をコンソールに表示するだけのシンプルなもので、コードは print(Hello World) の1行のみです。 Pythonが正しくインストールされているかを確認するには、まず「Hello World」を書いてみるのがおすすめです。作成方法は主に2つあります。ターミナル(コマンドライン)を使う方法と、Visual Studio CodeやVimなどのコードエディタを使う方法です。 始める前に、お使いのマシンにPython 3がインストールされていることを確認しておき

  2. Pythonでランダムな数値やIDを生成する方法を徹底解説

    プロジェクトでは、テスト用のサンプルデータの作成や空カラムへの値の埋め込みなど、さまざまな目的のためにランダムなデータを生成する必要があります。Pythonにはランダムデータを生成する方法が多数用意されており、この記事ではその代表的な手法をわかりやすく解説していきます。 Pythonのrandomモジュールとは Pythonに標準で付属している重要なライブラリの一つがrandomモジュールです。この記事全体を通してこのモジュールを使用していきます。 randomモジュールを使うには、コードの先頭でインポートするだけで準備完了です。 import random それでは、実際の使い方を見てみま