擬似乱数したい(random / numpy.random

1import random

擬似乱数を生成するパッケージ/モジュールはいろいろあります。 Pythonの標準モジュールで擬似乱数を生成するにはrandomモジュールを使います。 機密情報を使う場合はsecretsモジュールを使うほうがよいみたいです。

複数の乱数値を一度に生成したい場合はnumpy.randomが便利です。

乱数シードしたい

1import random
2random.seed(511)
3random.random()
4# -> 0.10846537689444802
1import numpy as np
2rng = np.random.default_rng(511)
3rng.random()
4# -> 0.9463589575041579

シードを固定することで、同じ乱数を生成できます。 テストのときなどに使います。

一様分布したい

1import random
2random.random()
3# -> 0.24352181317841615
1import numpy as np
2rng = np.random.default_rng()
3
4rng.random()
5# -> 0.1734872525999479
6
7rng.random(5)  # size=5
8# -> array([0.44780529, 0.27322929, 0.89200497, 0.57964083, 0.56720332])

[0.0, 1.0)の範囲の浮動小数点で一様分布する乱数を生成します。

任意の範囲で一様分布したい

1import random
2random.uniform(1, 5)
3# -> 3.9737232237549036
1import numpy as np
2rng = np.random.default_rng()
3
4rng.uniform(1, 5)
5# -> 1.2366360779462524
6
7rng.uniform(1, 5, 5)  # size=5
8# -> array([4.01063043, 4.3938906 , 1.9511828 , 4.44290251, 2.23030564])

[a, b]の範囲の浮動小数点で一様分布する乱数を生成します。

整数したい

1import random
2random.randint(1, 100)
3# -> 73
1import numpy as np
2rng = np.random.default_rng()
3
4rng.integers(1, 100)
5# -> 41
6
7rng.integers(1, 100, 5)  # size=5
8# -> array([23, 34, 88, 83, 94])

[a, b]の範囲の整数で一様分布する乱数を生成します。

ガウス分布したい

1import random
2
3random.gauss()  # mu=0, sigma=1
4# -> -0.6759904579865917
5
6random.gauss(mu=100, sigma=10)
7# -> 83.04934632054037
 1import numpy as np
 2rng = np.random.default_rng()
 3
 4rng.normal()  # loc=0, scale=1
 5# -> -0.4687162677485689
 6
 7rng.normal(loc=100, scale=10)  # loc=平均、scale=標準偏差
 8# -> 96.92358323438323
 9
10rng.normal(100, 10, 5)  # size=5
11# -> array([ 85.27675615,  87.21491819, 110.40065645, 102.60680418, 96.21210008])

平均mu、標準偏差sigmaのガウス分布にしたがう乱数を生成します。 mu=0sigma=1の場合は、正規ガウス分布になります。

リストしたい

1import random
2seq = ["いち", "に", "さん"]
3random.choice(seq)
4# -> 'さん'
1import numpy as np
2seq = ["いち", "に", "さん"]
3rng = np.random.default_rng()
4
5rng.choice(seq)
6# -> 'に'
7
8rng.choice(seq, 5)  # size=5
9# -> array(['に', 'さん', 'いち', 'いち', 'さん'], dtype='<U2')

指定したリストからランダムに選択できます。

リファレンス