84033


6,7,8,9,10 から4個の数字をランダムに取り出しその平均を求める操作を40000回繰り返すを以下のコードで書きました。

でもなぜか、真ん中がへこんでいます。

なぜなんでしょうか？

[code]

    import numpy as np
    from matplotlib import pyplot as plt
    t = list()
    for i in range(40000):
        s = np.random.randint(6, 11, 4)
        t+= [sum(s)/len(s)]
    
    plt.hist(t)
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/5GEqB.jpg)](https://i.stack.imgur.com/5GEqB.jpg)


CC BY-SA 4.0
2021-12-08T14:29:18.220
84032
2021-12-08T17:18:04.530
2021-12-08T14:52:19.660
3060
48948
question
python numpy
数値シミュレーションが正規分布になりません


`bin` の幅が太すぎるので、もっと細かく設定しましょう。

[code]

    plt.hist(t, bins=16)
    
[/code]

[![hist](https://i.stack.imgur.com/zVlEU.png)](https://i.stack.imgur.com/zVlEU.png)

**追記**

本題とは関係ありませんが、最近は [Random Generator — NumPy v1.21
Manual](https://numpy.org/doc/stable/reference/random/generator.html)
を使う方法が推奨されている様で、以下の様に書きます。

[code]

    import numpy as np
    from numpy.random import default_rng
    from matplotlib import pyplot as plt
    
    N = 40000
    M = 4
    
    rg = default_rng()
    t = list(map(np.average, rg.integers(6, 11, (N, M))))
    
    plt.hist(t, bins=16)
    plt.show()
    
[/code]


CC BY-SA 4.0
2021-12-08T16:45:29.297
84033
2021-12-08T17:18:04.530
2021-12-08T17:18:04.530
47127
47127
84032
answer