繁体   English   中英

为什么我的直方图在python中的这个随机问题图中看起来很奇怪?

[英]why does my histogram look weird in this stochastic problem plot in python?

我正在尝试用Python编写一个随机程序来复制一个公平的骰子(一个骰子)掷骰,以使这个骰子被掷骰100次。 我打算将骰子卷的输出显示为直方图。

我以为直方图具有特定的n形状,但这就是我在下面使用的代码所得到的。

import numpy as np
import matplotlib.pyplot as plt
x = []
for i in range(100):
    num1 = random.choice(range(1,7))
    x.append(num1)
plt.hist(x, bins=6)
plt.xlabel('dice')
plt.show()

myweirdhistogram

另外,是否有更简单的方法在年龄较大时以python绘制直方图,例如年龄为[10,3,5,1],表中的频率为[2,3,4,4]? 我必须在这样的列表中键入年龄的全部频率:age = [10,10,3,3,3,5,5,5,5,5,1,1,1,1],然后再写该程序? 请在下面的代码中查看我的意思:

import numpy as np
import matplotlib.pyplot as plt

plt.close()

ages = [88,88,88,88,76,76,76, 65,65,65,65,65,96,96,52,52,52,52,52,98,98,102,102,102,102]

#the frequency was = [4, 3, 5, 2, 5, 2, 4] which corresponded to the ages [88,76,65,96,52,98,102]

num_bins = 25
n, bins, patches = plt.hist(ages, num_bins, facecolor='blue')

plt.xlabel('age')
plt.ylabel('Frequency of occurence')
plt.show()

#my histogram again looks more like a bar chart. Is this because I used bins as the ages?

到目前为止,为我绘制带有随机数的直方图比较容易,但对于我来说却不是一张表格。 这是我的第二个奇怪的输出: mysecondweirdhistogram

>>> ages = [10,3,5,1]
>>> freqs = [2,3,4,4]

使用zip将每个年龄与其频率配对; 然后使用频率将其中的数量添加到新容器中。

>>> q = []
>>> for a, f in zip(ages, freqs):
...     q.extend(a for _ in range(f))

>>> q
[10, 10, 3, 3, 3, 5, 5, 5, 5, 1, 1, 1, 1]
>>>

a for _ in range(f)是生成器表达式,迭代时将生成f a extend方法使用(迭代)生成器表达式。 我们通常将_用作我们将不使用的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM