整数の一様乱数を生成するには rng.integers(low, high=None, size=None)
を使います.
例えば,次の例では0以上10未満(つまり最大9)の乱数を1個生成します.
import numpy as np
rng = np.random.default_rng()
rng.integers(10)
2
10以上20未満(最大19)の乱数を1個生成するには次のように記述します.
# 10 以上,20未満の整数の一様乱数
rng.integers(10, 20)
19
10以上20未満(最大19)の乱数を100個生成するには次のように記述します.
rng.integers(10, 20, 100)
array([14, 13, 17, 17, 10, 19, 19, 10, 12, 15, 16, 19, 18, 13, 16, 17, 19, 12, 14, 15, 10, 13, 15, 12, 17, 14, 18, 15, 10, 13, 14, 15, 16, 12, 16, 11, 14, 18, 11, 13, 10, 16, 19, 10, 10, 15, 11, 17, 16, 18, 15, 10, 17, 18, 13, 13, 19, 18, 12, 13, 19, 11, 12, 10, 14, 19, 14, 11, 18, 11, 15, 14, 17, 18, 15, 19, 19, 10, 14, 19, 12, 12, 11, 17, 11, 12, 14, 17, 17, 10, 13, 16, 16, 19, 17, 18, 12, 10, 19, 17])
また 01一様乱数を100個生成するとき,size=100
のように記述することも可能です.
rng.integers(0, 2, size=100)
array([1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 1, 1, 0, 1, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 1])
行列形式で乱数を取得することも可能です.例えば5行4列で取得してみます.
rng.integers(0, 2, size=(5,4))
array([[1, 1, 1, 0], [0, 1, 1, 0], [0, 1, 0, 1], [0, 1, 1, 1], [0, 1, 0, 0]])
10以上20未満(最大19)の乱数を100個生成して,ヒストグラムを描いてみます.
x = rng.integers(10, 20, 100)
# ヒストグラムを描く
fig, ax = plt.subplots(1, 1, figsize=(6, 4))
ax.hist(x, bins=10)
# plt.savefig('rng-integers.png', dpi=300, facecolor='white')
plt.show()
ポアソン分布に従う乱数を発生させるには,rng.poisson(lam=1.0, size=None)
を使います.なお,引数の lam=1.0
は平均値です.
たとえば平均2のポアソン分布に従う乱数を20個生成してみます.
import numpy as np
rng = np.random.default_rng()
lam = 2 # 平均
rng.poisson(lam, 20)
array([2, 2, 2, 0, 1, 1, 0, 1, 3, 4, 2, 2, 1, 0, 2, 1, 1, 1, 2, 2])
平均2のポアソン乱数を1000個発生させてヒストグラムを描いてみます.
import matplotlib.pyplot as plt
from IPython.display import set_matplotlib_formats
# from matplotlib_inline.backend_inline import set_matplotlib_formats # バージョンによってはこちらを有効に
set_matplotlib_formats('retina')
lam = 2 # 平均
rng = np.random.default_rng()
x = rng.poisson(lam, 1000)
# ヒストグラムを描く
fig, ax = plt.subplots(1, 1, figsize=(6, 4))
ax.hist(x)
# plt.savefig('rng-poisson.png', dpi=300, facecolor='white')
plt.show()