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']

次に、私たちが使用するrandom()メソッドは乱数を返し、それは半開区間 [0,1)範囲内にあり、0 を含みますが 1 は含みません。

例

# 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())

上記の例を実行した後の出力結果は次のとおりです:

使用默认种子生成随机数: 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 は形状パラメータです。
その他の拡張