Python random モジュール
Python randomモジュールは主に乱数を生成するために使用されます。
randomモジュールは、さまざまな分布の擬似乱数生成器を実装しています。
使用するにはrandom関数を先にインポートする必要があります:
import random
random モジュールの内容を確認する:
例
>>> import random
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
>>> dir(random)
['BPF', 'LOG4', 'NV_MAGICCONST', 'RECIP_BPF', 'Random', 'SG_MAGICCONST', 'SystemRandom', 'TWOPI', '_Sequence', '_Set', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_accumulate', '_acos', '_bisect', '_ceil', '_cos', '_e', '_exp', '_floor', '_inst', '_log', '_os', '_pi', '_random', '_repeat', '_sha512', '_sin', '_sqrt', '_test', '_test_generator', '_urandom', '_warn', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate']
次に、私たちが使用するrandom()メソッドは乱数を返し、それは半開区間 [0,1)範囲内にあり、0 を含みますが 1 は含みません。
例
# random パッケージをインポート
import random
# 乱数を生成
print(random.random())
import random
# 乱数を生成
print(random.random())
上記の例の出力結果は次のとおりです:
0.4784904215869241
seed()メソッドは乱数生成器のシードを変更します。他の random モジュール関数を呼び出す前にこの関数を呼び出すことができます。
例
#!/usr/bin/python3
import random
random.seed()
print ("デフォルトのシードを使用して乱数を生成:", random.random())
print ("デフォルトのシードを使用して乱数を生成:", random.random())
random.seed(10)
print ("整数 10 のシードを使用して乱数を生成:", random.random())
random.seed(10)
print ("整数 10 のシードを使用して乱数を生成:", random.random())
random.seed("hello",2)
print ("文字列のシードを使用して乱数を生成:", random.random())
import random
random.seed()
print ("デフォルトのシードを使用して乱数を生成:", random.random())
print ("デフォルトのシードを使用して乱数を生成:", random.random())
random.seed(10)
print ("整数 10 のシードを使用して乱数を生成:", random.random())
random.seed(10)
print ("整数 10 のシードを使用して乱数を生成:", random.random())
random.seed("hello",2)
print ("文字列のシードを使用して乱数を生成:", random.random())
上記の例を実行した後の出力結果は次のとおりです:
使用默认种子生成随机数: 0.7908102856355441 使用默认种子生成随机数: 0.81038961519195 使用整数 10 种子生成随机数: 0.5714025946899135 使用整数 10 种子生成随机数: 0.5714025946899135 使用字符串种子生成随机数: 0.3537754404730722
random モジュールのメソッド
random モジュールのメソッドは次のとおりです:
| メソッド | 説明 |
|---|---|
| seed() | 乱数生成器を初期化します |
| getstate() | ジェネレータの現在の内部状態をキャプチャしたオブジェクトを返します。 |
| setstate() | state は、以前に getstate() を呼び出して取得したものでなければなりません。setstate() は、ジェネレータの内部状態を getstate() が呼び出された時の状態に復元します。 |
| getrandbits(k) | k 個のランダムなビットを持つ非負の Python 整数を返します。このメソッドは MersenneTwister ジェネレータとともに提供され、他の一部のジェネレータでも API のオプション部分として提供される場合があります。可能な場合、getrandbits() は randrange() が任意の大きな区間を処理できるようにします。 |
| randrange() | range(start, stop, step) からランダムに選択された要素を返します。 |
| randint(a, b) | a <= N <= b を満たすランダムな整数 N を返します。 |
| choice(seq) | 空でないシーケンス seq からランダムな要素を返します。seq が空の場合、IndexError を発生させます。 |
| choices(population, weights=None, *, cum_weights=None, k=1) | population から復元抽出を行い、サイズ k の要素リストを返します。population が空の場合、IndexError を発生させます。 |
| shuffle(x[, random]) | シーケンス x の位置をランダムにシャッフルします。 |
| sample(population, k, *, counts=None) | 母集団シーケンスまたは集合から選択された一意の要素の長さ k のリストを返します。重複なしのランダムサンプリングに使用されます。 |
| random() | [0.0, 1.0) の範囲内の次のランダムな浮動小数点数を返します。 |
| uniform() | ランダムな浮動小数点数 N を返します。a <= b の場合は a <= N <= b、b < a の場合は b <= N <= a です。 |
| triangular(low, high, mode) | low <= N <= high となるランダムな浮動小数点数 N を返し、これらの境界の間で指定された mode を使用します。low と high の境界はデフォルトで 0 と 1 です。mode パラメータはデフォルトで境界間の中点となり、対称分布になります。 |
| betavariate(alpha, beta) | Beta 分布。パラメータの条件は alpha > 0 かつ beta > 0 です。戻り値の範囲は 0 と 1 の間です。 |
| expovariate(lambd) | 指数分布。lambd は、必要な平均値で 1.0 を割った値であり、ゼロ以外である必要があります。 |
| gammavariate() | Gamma 分布(ガンマ関数ではありません)パラメータの条件は alpha > 0 かつ beta > 0 です。 |
| gauss(mu, sigma) | 正規分布(ガウス分布とも呼ばれます)。mu は平均値、sigma は標準偏差です。この関数は、後述の normalvariate() 関数より少し高速です。 |
| lognormvariate(mu, sigma) | 対数正規分布。この分布の自然対数を取ると、平均 mu、標準偏差 sigma の正規分布が得られます。mu は任意の値でかまいませんが、sigma はゼロより大きい必要があります。 |
| normalvariate(mu, sigma) | 正規分布。mu は平均値、sigma は標準偏差です。 |
| vonmisesvariate(mu, kappa) | フォン・ミーゼス分布。mu は平均角度で、ラジアンで表され、0 から 2*pi の間です。kappa は集中度パラメータで、ゼロ以上でなければなりません。kappa がゼロの場合、この分布は 0 から 2*pi の範囲で一様なランダム角度に縮小されます。 |
| paretovariate(alpha) | パレート分布。alpha は形状パラメータです。 |
| weibullvariate(alpha, beta) | ワイブル分布。alpha は尺度パラメータ、beta は形状パラメータです。 |