为什么这个numpy multinominal方法运行时没有任何错误?

2024-06-26 02:10:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行了以下行:

np.random.multinomial(10, [1/5., 1/5., 1/5., 1/5., 1/5., 1/5.])

它产生一个输出

array([3, 4, 0, 0, 3, 0])

也就是说,当我掷一个6面骰子10次时,上面的输出表示某个面出现的次数的频率计数。在这里,第1面出现了3次,第2面出现了4次,以此类推

我的问题是,上面的方法不应该抛出一个错误,因为骰子两边的概率值总和为>;1/0 ? 我肯定我误解了这里的一些东西,但不知道是什么


Tags: 方法gt错误nprandom骰子概率次数
2条回答

实际上,在pvals和为1之前,代码只考虑前五个和。所以在你的数组中,无论你运行多少次,第6个元素都是零。因此,如果你给所有6个元素1/3,那么它将执行,就像一个骰子的第3面抛出,在输出数组中,最后3个元素将是零。它不必显示错误。一旦总数达到一,它就会停止,而忽略其他的。这就是语法。 希望这有帮助

文件上说:

pvals : sequence of floats, length p
    Probabilities of each of the ``p`` different outcomes.  These
    should sum to 1 (however, the last element is always assumed to
    account for the remaining probability, as long as
    ``sum(pvals[:-1]) <= 1)``.

这意味着最后一个元素的概率为0 运行以下命令:

sum_last = 0

for trial in np.arange(20):
    sum_last += np.random.multinomial(10, [1/5., 1/5., 1/5., 1/5., 1/5., 1/5.])[-1]
print sum_last

您将看到最后一个元素是如何从不出现的,概率确实是0

相关问题 更多 >