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

【Python入門】リストに存在しない乱数を選択・生成する方法

リストに含まれない乱数を選択する基本の考え方

Pythonで「指定したリストに含まれていない乱数」を取得したい場合、最もシンプルな方法は、範囲内の乱数を繰り返し生成し、その値がリストに存在しないことを確認できた時点で採用するというアプローチです。

乱数の生成には標準ライブラリ random モジュールの randrange() 関数を使用し、リストとの重複チェックにはメンバーシップ演算子の not in を使います。

実装例:while文で条件を満たすまで繰り返す

import random

l1 = [2, 4, 7]

while True:
    x = random.randrange(1, 10)
    if x not in l1:
        break

print(x)  # 出力例: 6(リスト l1 に含まれない値)

コードのポイント解説

  • random.randrange(1, 10) は、1 以上 9 以下の整数をランダムに生成します(終了値の 10 は範囲に含まれません)。
  • if x not in l1: で、生成された値 x がリスト l1 に含まれていないかどうかを判定します。
  • 条件を満たした時点で break によりループを抜け、その値を採用します。リスト内の値(この例では 2、4、7)が生成され続ける限り、ループは再試行を繰り返します。

より効率的な代替手法:リスト内包表記とrandom.choice()

除外対象が多い場合や確実に1回で結果を得たい場合は、「候補となる全値からリスト内の値を除いたリスト」を作成し、そこから random.choice() で選ぶ方法がおすすめです。

import random

l1 = [2, 4, 7]

candidates = [i for i in range(1, 10) if i not in l1]
x = random.choice(candidates)

print(x)  # リスト l1 に含まれない値のみから選ばれる

この方法なら再試行のループが不要になり、コードの意図も明確になります。候補が空になるケース(範囲内のすべての値がリストに含まれる場合)だけは注意が必要です。

  1. Pythonのリストから最大値を取得する方法|max()関数の使い方を解説

    Pythonで最大値を見つけるには?Pythonには、リストなどのイテラブル(反復可能なオブジェクト)の中から最大の数値を簡単に取り出すための組み込み関数 max() が用意されています。この関数は、カンマ区切りで渡した複数の数値、あるいはリスト・タプルなどのコレクションを引数に受け取ることができます。基本的な使い方まず、複数の数値を直接引数として渡す例を見てみましょう。>>> max(10, 23, 43, 21) 43このように、max() に数値をカンマ区切りで渡すと、その中で最も大きい値である 43 が返されます。リストから最大値を取得する次に、リストを引数として渡す

  2. Pythonで乱数を生成する方法を徹底解説!randomモジュールの基本と使い方

    Pythonの標準ライブラリには、乱数を生成するための機能がまとめられた random モジュールが用意されています。このモジュールを利用することで、浮動小数点数や整数の乱数、シーケンスからのランダムな要素の取得などを簡単に実現できます。ここでは、よく使われる主要な関数をサンプルコードとともに紹介します。random():0以上1未満の浮動小数点数を生成もっとも基本的な関数が random() です。この関数は、0以上1未満の範囲のランダムな浮動小数点数を返します。>>> import random>>> random.random()0.520470277