重複しない乱数配列
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] |