このモジュールは、さまざまな分散型疑似乱数ジェネレーターを実装します。間隔内で乱数を描画したり、リストから要素を描画したり、分布からサンプルを描画したりできます。
ランダムモジュールに直接アクセスすることはできません。ランダムモジュールをインポートしてから、ランダム静的オブジェクトを介してこのメソッドを呼び出す必要があります。
import random
1乱数を生成する
同じシードの下にあるランダムジェネレータシードは、同じ乱数を生成します
random.seed()
[0、1.0)の範囲内の次のランダムな浮動小数点数を返します。
random.random()
random.int(a、b)は整数、a <= N <= bを生成します。
random.randint(1,4) #
2
2順番にランダムに1つ選択します
シーケンス内の整数をランダムに選択しますrange()random.randrange(start、stop、step)
random.randrange(1,5,2)
3
random.choice(population)は、空でないシーケンスの母集団からランダムな要素を返します。seqが空の場合、IndexErrorが発生します。
random.choice([2,5,8])
8
random.choices(population、weights = None、*、cum_weights = None、k)。重みに従って全体からKを抽出し、重みシーケンスの長さは母集団の長さと等しくなければなりません。明らかに、重みは与えられておらず、k = 1です。これは
random.choice(population)と同等です。
random.choices(['red', 'black', 'green'], [4, 10, 2], k=6)
['green', 'black', 'red', 'black', 'green', 'black']
random.sample(population、k、*、counts = None)は、母集団のシーケンスまたはセットから選択された一意の要素のkの長さのリストを返します。つまり、繰り返しのないランダムサンプリング(置換なし)を返します。
random.sample(['red', 'black', 'green'], 2)
['red', 'green']
バージョン3.9以降、countsパラメーターが追加され、数値を指定できるようになりました。random.sample(['red'、 'red'、 'red'、 'black'、 'green']、2)はrandomと同等です。 sample(['red'、 'black'、 'green']、counts = [3,1,1]、2)
3分布からサンプルを抽出します
一般的に使用されるディストリビューションは次のとおりです。
関数 | 配布 |
---|---|
gauss(mu、sigma)/ normalvarite(mu、sigma) | 正規分布 |
ユニフォーム(a、b) | 均等に分散 |
expovariate(lamda) | インデックス分布 |
gammavariate(alpha、beta) | ガンマ分布 |
lognormvariate(mu、sigma) | 対数正規分布 |
ベータ変量(アルファ、ベータ) | ベータ分布 |
weibullvariate(alpha、beta) | ワイブル分布 |
paretovariate(alpha) | パレート分布 |
vonmisesvariate(mu,kappa) | フォンミーゼス分布( |
random.gauss(1,2)
-0.34372692554557815
random.uniform(1,2)
1.7719936383153665
random.expovariate(1)
0.079384517694696
random.gammavariate(1,3)
3.8134444290373866
random.lognormvariate(1,2)
2.561312589509173
random.betavariate(1,2)
0.03565784800319274
random.weibullvariate(1,2)
1.211306128111137
random.paretovariate(1)
1.709941711311189
random.vonmisesvariate(1,2)
2.377632588889548
data = [random.gammavariate(2,4) for i in range(10000)] # 抽取10000个gamma分布样本
#直方图
import matplotlib.pyplot as plt
plt.hist(data, bins=100, color="#FF0000", alpha=.7)
4注文をシャッフルします
random.shuffle(x [、random])シーケンスxをランダムにシャッフルします。
a=[1,3,5,7,9]
random.shuffle(a);print(a)
[3, 7, 5, 1, 9] # 原地打乱顺序