import numpy as np
randint
# [0, 3) の整数の乱数
rnd1 = np.random.randint(0, 3, 10)
rnd1
array([0, 1, 0, 1, 0, 1, 0, 0, 1, 1])
random.randint(下限, 上限, サイズ)
: 下限以上で上限未満の整数乱数(未満に注意)
# [0, 3) の整数の乱数(多次元)
rnd2 = np.random.randint(0, 3, (2, 5))
rnd2
array([[1, 1, 2, 1, 2],
[1, 2, 2, 2, 0]])
random.choice
# リストからランダムに選択
targets = ['A', 'B', 'C']
rnd3 = np.random.choice(targets, 4)
rnd3
array(['A', 'C', 'A', 'B'], dtype='<U1')
random.choice(リスト, サイズ, replace=True): リストから等確率で選択
与えられたリストからランダムに選びたい場合は、numpy.random.choice
が使えます。
デフォルトでは、同じ値が繰り返し出てくる可能性がありますが、replace=False
オプションで一度だけしか出てこないようにできます。
# リストからランダムに最大で1度だけ選択
rnd4 = np.random.choice(targets, 3, replace=False)
rnd4
array(['B', 'A', 'C'], dtype='<U1')
random.permutation
# リストの順番をランダムに(元のリストはそのまま)
rnd5 = np.random.permutation(targets)
rnd5
array(['A', 'C', 'B'], dtype='<U1')
random.permutation(リスト)
: リストの順番をランダムにした新しいリスト
一度だけしか出てこないで、全ての要素が必要な場合、permutation
やshuffle
を使えます。numpy.random.permutation
では、ランダムなリストの順番ができます。
random.shuffle
# リストの順番をランダムに(元のリストを変更)
np.random.shuffle(targets)
targets
['C', 'B', 'A']
random.shuffle(リスト)
: リストの順番をランダムに変更
numpy.random.shuffleでは、リストの順番そのものをランダムにします。
サイズには、数字とタプルが指定できます。
- 数字: 要素数が、数字と同じ1次元配列
- タプル:
shape
が、タプルと同じ多次元配列
リストが長くて必要な個数が少なければ、permutation
やshuffle
よりchoice
の方が効率的です。permutation
とshuffle
は、リストだけでなく多次元配列も使えますが、0軸だけが対象になります。
コメント