⛳
Pythonの初心者レッスンーーrandomモジュール
シーリズの目次
Pythonの初心者レッスンをここにまとめています。
Pythonのrandom
モジュールは、乱数を生成するための機能を提供する標準ライブラリの一部です。このモジュールを使用すると、様々な種類の乱数を生成したり、シャッフルしたりすることができます。主な機能には以下のようなものがあります:
- 擬似乱数の生成: 擬似乱数を生成するための関数が提供されています。これらの関数は、乱数生成器を使用して疑似乱数を生成します。具体的には、整数、浮動小数点数、ランダムな要素を持つシーケンスを生成する関数があります。
- シャッフル: シーケンスの要素をランダムに並べ替える機能があります。リストやタプルなどのシーケンスをシャッフルすることができます。
- ランダムな選択: シーケンスからランダムに要素を選択する関数があります。
- 乱数シードの設定: 乱数生成器の初期状態を設定するための関数が提供されており、再現性のある乱数の生成が可能です。
例えば、以下のように使用します:
import random
# 0以上1未満の浮動小数点数を生成する
print(random.random())
# 1から10までの整数をランダムに生成する
print(random.randint(1, 10))
# リストの要素をランダムにシャッフルする
my_list = [1, 2, 3, 4, 5]
random.shuffle(my_list)
print(my_list)
random
モジュールのseed
(シード)とは、乱数生成器が初期状態として使用する整数のことです。乱数生成器は実際には擬似乱数を生成しており、その生成方法にはアルゴリズムが使われています。このアルゴリズムは初期化時にシードという整数を必要とし、このシード値によって生成される乱数の系列が決定されます。
例えば、次のようにしてシード値を設定し、乱数系列を初期化します:
import random
# シード値を設定する
random.seed(42)
# 乱数を生成する
print(random.random())
print(random.randint(1, 10))
上記の例では、シード値として 42 を指定して乱数生成器を初期化しています。同じシード値を使って再度乱数生成器を初期化すると、同じ乱数系列が再現されます。
以下は、Pythonのrandomモジュールで提供されているすべての関数とその簡単な説明をテーブルで示したものです。
関数名 | 説明 | 使用例 |
---|---|---|
random() |
0以上1未満の浮動小数点数を返す | random.random() |
seed(a=None) |
乱数生成器のシードを設定する | random.seed(42) |
randrange(stop) |
0から stop 未満の整数をランダムに返す | random.randrange(10) |
randrange(start, stop) |
start から stop 未満の整数をランダムに返す | random.randrange(1, 10) |
randrange(start, stop, step) |
start から stop 未満の整数を step 刻みでランダムに返す | random.randrange(0, 100, 10) |
randint(a, b) |
aからbまで(両端を含む)の整数をランダムに返す | random.randint(1, 100) |
choice(seq) |
シーケンスからランダムに要素を選んで返す | random.choice(['apple', 'banana', 'cherry']) |
choices(population, weights=None, *, cum_weights=None, k=1) |
population からランダムに k 個の要素を選んで返す | random.choices(['apple', 'banana', 'cherry'], k=2) |
shuffle(x) |
シーケンスの要素をランダムにシャッフルする | my_list = [1, 2, 3]; random.shuffle(my_list) |
sample(population, k) |
population から重複なしで k 個の要素を選んで返す | random.sample(range(100), 10) |
random_sample() |
0以上1未満の浮動小数点数を返す | random.random_sample() |
random_uniform(a, b) |
aからbまでの範囲の浮動小数点数を返す | random.uniform(1.0, 10.0) |
random_integers(a, b) |
aからbまでの範囲の整数を返す | random.random_integers(1, 100) |
random_normal(mu, sigma) |
平均 mu と標準偏差 sigma の正規分布から乱数を生成する | random.random_normal(0.0, 1.0) |
random_lognormal(mu, sigma) |
平均 mu と標準偏差 sigma の対数正規分布から乱数を生成する | random.random_lognormal(0.0, 1.0) |
random_gammavariate(alpha, beta) |
ガンマ分布から乱数を生成する | random.random_gammavariate(1.0, 2.0) |
random_betavariate(alpha, beta) |
ベータ分布から乱数を生成する | random.random_betavariate(0.5, 0.5) |
random_expovariate(lambd) |
指数分布から乱数を生成する | random.random_expovariate(0.5) |
random_gauss(mu, sigma) |
平均 mu と標準偏差 sigma のガウス分布から乱数を生成する | random.random_gauss(0.0, 1.0) |
random_triangular(low, high, mode) |
三角分布から乱数を生成する | random.random_triangular(0.0, 1.0, 0.5) |
random_uniform() |
0以上1未満の範囲の浮動小数点数を返す | random.random_uniform() |
getstate() |
乱数生成器の内部状態を返す | random.getstate() |
setstate(state) |
乱数生成器の内部状態を設定する | random.setstate(state) |
Discussion