Pythonで重複のない乱数を生成する方法を解説
Pythonで重複のない乱数を生成する方法
以下のプログラムは、1から100までの範囲で重複のないランダムな整数を10個生成します。仕組みはシンプルで、指定した範囲内で乱数を生成し、その値がまだリストに存在しない場合にのみリストへ追加していきます。
>>> import random
>>> list=[]
>>> for i in range(10):
r=random.randint(1,100)
if r not in list: list.append(r)
>>> list
[13, 53, 25, 95, 64, 87, 27, 93, 74, 60]
コードのポイント
random.randint(1, 100) は1から100までの整数をランダムに返します。生成された値がすでにリストに含まれているかどうかを if r not in list で判定し、重複を防いでいます。
なお、この方法はループのたびにリスト全体を走査するため、要素数が多い場合は効率が下がる点に注意してください。より効率的にしたい場合は、セット(set)で重複を管理する方法が有効です。
より簡潔な方法:random.sample()を使う
実はPythonには、重複のない乱数リストを1行で生成できる便利な関数 random.sample() が用意されています。
>>> import random
>>> random.sample(range(1, 101), 10)
[42, 7, 89, 15, 63, 30, 96, 51, 8, 74]
random.sample(母集団, 取り出す個数) は、指定した範囲から重複なしで指定個数の要素を抽出してくれるため、コードが大幅に簡潔になります。用途に応じて使い分けるとよいでしょう。
-
Pythonで素数を生成する方法をわかりやすく解説
素数とは何か? 素数とは、1とその数自身以外の正の整数では割り切れない数のことです。たとえば、2、3、5、7、11などが素数に該当します。なお、1は約数を1つしか持たないため、素数には含まれない点に注意しましょう。 Pythonで素数を判定する基本的な考え方 Pythonでは、剰余演算子「%」を使うことで、ある数が別の数で割り切れるかどうかを簡単に調べられます。x % y の結果が0であれば、xはyで割り切れることを意味します。 1から100までの範囲で素数を求める場合、各数値(仮にxとします)について、2からx-1までのすべての数で順番に割り切れるかを確認する必要があります。この処理は、二
-
Pythonで乱数を生成する方法を徹底解説!randomモジュールの基本と使い方
Pythonの標準ライブラリには、乱数を生成するための機能がまとめられた random モジュールが用意されています。このモジュールを利用することで、浮動小数点数や整数の乱数、シーケンスからのランダムな要素の取得などを簡単に実現できます。ここでは、よく使われる主要な関数をサンプルコードとともに紹介します。random():0以上1未満の浮動小数点数を生成もっとも基本的な関数が random() です。この関数は、0以上1未満の範囲のランダムな浮動小数点数を返します。>>> import random>>> random.random()0.520470277