整数乱数とランダム選択

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(リスト): リストの順番をランダムにした新しいリスト

一度だけしか出てこないで、全ての要素が必要な場合permutationshuffleを使えます。numpy.random.permutationでは、ランダムなリストの順番ができます。

random.shuffle

# リストの順番をランダムに(元のリストを変更)
np.random.shuffle(targets)
targets
['C', 'B', 'A']

random.shuffle(リスト): リストの順番をランダムに変更

numpy.random.shuffleでは、リストの順番そのものをランダムにします。

サイズには、数字とタプルが指定できます。

  • 数字: 要素数が、数字と同じ1次元配列
  • タプル: shapeが、タプルと同じ多次元配列

リストが長くて必要な個数が少なければpermutationshuffleよりchoiceの方が効率的です。permutationshuffleは、リストだけでなく多次元配列も使えますが、0軸だけが対象になります。

コメント

タイトルとURLをコピーしました