引数 num はダイスの面数、times で投げる回数を与えることにする。戻り値は、1 から 6 までの numpy.array 型となる。
import numpy as np import matplotlib.pyplot as plt def ThrowDice(num, times): return np.random.randint(1, num+1, times)試しに 6面ダイスを 10 回投げてみる。
>> print(ThrowDice(6, 10)) [1 5 4 2 2 5 6 1 1 6]6面ダイスを100回投げて、各々の面に対して出た回数をグラフ化する。
ヒストグラムを生成する場合は、matplotlib.pyplot.hist 関数を使用する。
このとき、第1引数には表示したいデータリスト、引数 bins には対象となる値(1 ~6)および +1 した値(7)のリストを渡す。
また、引数 rwidth は、棒グラフの幅を示し、align は表示場所を表す。("left" の場合は、棒グラフの中央が bins で指定した値の真上になる。"mid" の場合は bins の中間位置、"right" の場合は棒グラフの中央が次のx値の真上になる。)
def showHistogram(bins, cnt): result = ThrowDice(6, cnt) print(result) plt.hist(result, align="left", rwidth=0.5, bins=bins) plt.grid(True) plt.show() showHistogram([1, 2, 3, 4, 5, 6, 7], 100)
ここで bins=[1, 2, 3] としてみる。以下の例の場合、2 の目が出なかったがグラフ上には 2 回出たように表示される。
>> showHistogram([1, 2, 3], 10) [3 6 6 4 6 6 3 6 1 6]一般的に bin にリスト [x_1, x_2, ・・・. x_n] が与えられた場合、半開区間 [x_1, x_2), [x_2, x_3), …, [x_n-2, x_n-1) および 閉区間 [x_n-1, x_n] が各binの区間となる。
この例の場合、半開区間 [1, 2), 閉区間[2, 3]に含まれる要素の数となるため、2つめの区間 [2, 3] には要素 3 が含まれ、その数は 2 となる。
0 件のコメント:
コメントを投稿