擬似乱数したい(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=0
、sigma=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')
指定したリストからランダムに選択できます。