PythonのSciPyライブラリで一様分布からランダムに値を生成するには、stats.randint.rvs/stats.uniform.rvsを用いる。整数を生成した場合はstats.randint.rvs、連続値を生成したい場合は、stats.uniform.rvsを用いる。
stats.randint.rvs/stats.uniform.rvsの使い方
stats.randint.rvsの使い方
stats.randint.rvsの第一引数lowに生成する整数の最小値を、第二引数のhighに生成する整数の「最大値-1」を指定する。[low, high-1]の範囲から整数が生成される。
from scipy import stats
print(stats.randint.rvs(low=-5, high=5))
# -2
print(stats.randint.rvs(low=10, high=20))
# 17
引数sizeを指定することで、生成する値の数を変えることができる。
print(stats.randint.rvs(low=-5, high=5, size=2))
# [ 4 -5]
print(stats.randint.rvs(low=-5, high=5, size=5))
# [ 0 4 -4 -5 2]
整数が一様分布から生成されているか確認するため、1~10の範囲の値を10000個生成し、確認する。
import seaborn as sns
v = stats.randint.rvs(low=1, high=11, size=10000)
sns.displot(v)
stats.uniform.rvs
stats.uniform.rvsの第一引数locに生成する連続値の最小値を、第二引数のscaleに生成する連続値の範囲「loc+scale」を指定する。[low, loc+scale]の範囲から連続値が生成される。
print(stats.uniform.rvs(loc=0, scale=1))
# 0.6409290782947632
print(stats.uniform.rvs(loc=10, scale=50))
# 55.231159631919645
引数sizeを指定することで、生成する値の数を変えることができる。
print(stats.uniform.rvs(loc=0, scale=1, size=3))
# [0.73455082 0.31483708 0.98581969]
print(stats.uniform.rvs(loc=10, scale=50, size=6))
# [38.14807871 32.45504149 55.58068201 21.27074808 58.91817297 27.91614516]
一様分布から生成されているか確認するため、1~10の範囲の値を10000個生成し、確認する。
v = stats.uniform.rvs(loc=0, scale=1, size=10000)
sns.displot(v)
コメント