重複しない乱数配列
0~n−1の整数を重複なくランダムに並べた配列。arange()
で数列を作り、それをnumpy.random
モジュールのshuffle()
かpermutation()
でシャッフルする。shuffle()
は元の配列を書き換え、permutation()
は元の配列を書き換えずにシャッフル後の新たな配列を返す。permutation(n)
で整数を指定すると、0 ~n-1がランダムに並んだ配列を返す。
“permutation”は置換の意味で、配列中の2要素を何回かランダムに置換していくイメージ(同じ単語が順列の意味でも使われる)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
import numpy as np np.random.seed(0) a = np.arange(5) print(np.random.permutation(a)) # [2 0 1 3 4] np.random.shuffle(a) print(a) # [0 2 1 4 3] print(np.random.permutation(5)) # [1 3 4 0 2] |
m~n−1の乱数配列は、arange(m, n)
をシャッフル。
1 2 3 4 5 6 7 8 9 10 11 |
import numpy as np np.random.seed(0) a = np.arange(3, 7) print(np.random.permutation(a)) # [5 6 4 3] np.random.shuffle(a) print(a) # [3 5 4 6] |
重複を許す乱数配列
0~m−1の範囲で重複を許してn個の要素を持つ配列を生成する方法。
簡単なのはnumpy.random
のchoice()
でサイズを指定する方法。
1 2 3 4 5 6 7 |
import numpy as np np.random.seed(0) a = np.arange(5) print(np.random.choice(a, len(a))) # [4 0 3 3 3] |
m~n−1の範囲の乱数配列は、arange(m, n)
にchoice()
を使う。
1 2 3 4 5 6 7 |
import numpy as np np.random.seed(0) a = np.arange(3, 7) print(np.random.choice(a, len(a))) # [3 6 4 3] |