numpy python中的np.random.binomial是如何工作的

ylamdve6  于 2023-03-12  发布在  Python
关注(0)|答案(1)|浏览(196)

我有下面的代码,但我不知道它如何工作,即使在阅读文档..

print(np.random.binomial(n = 1, [0.1,0.9]))

我想产生0或1值的概率为10%是1和90%是0。上面的代码是你会怎么做?
如果我把代码改成下面的代码呢?,当p参数有3个值时,这对分布意味着什么?,n为2是否意味着可能的值是0,1,2?

print(np.random.binomial(n = 2, p = [0.1,0.5,0.4]))
11dmarpk

11dmarpk1#

我看了一下函数实现。
二项分布中的参数n表示我们要进行多少次伯努利实验。在二项分布中,p表示每次伯努利实验的等概率。
那么p的列表对于二项分布意味着什么呢?没有。在这个函数中,作为p参数的list_of_p的概率列表将产生与len(list_of_p)一样多的样本。这个函数将检查list_of_p中的每个元素是否在0和1之间。
list_of_p中的所有元素都相同的特定情况下,我们可以使用第三个参数:size。也就是说,这两行是等价的:

np.random.binomial(n = 1, [0.1,0.1])
np.random.binomial(n = 1, 0.1, 2)

所以,如果我们可以告诉函数,我们需要两个不同参数的样本数,我们可以给予函数矛盾的信息,对吗?,是的,但是如果我们这样做,函数会引发错误。

# Works fine
np.random.binomial(n = 1, [0.1, 0.3], 2)
# Raises an exception
np.random.binomial(n = 1, [0.1, 0.3], 1)

# Works fine also if the list has length 1
np.random.binomial(n = 1, [0.1], 20)

为了回答你的问题,n=2的二项分布产生从0到2的数字。看看Binomial distribution definition。我不会详细说明,因为这是数学,而不是编码。
函数调用np.random.binomial(n = 2, p = [0.1, 0.5, 0.4])将生成三个二项式分布样本,每个样本为B(2, 0.1)B(2, 0.5)B(2, 0.4)
我想你主要问题的答案现在已经很清楚了,如果你用二项式函数来做一个取1的概率为0.1的伯努利实验,你应该写:

np.random.binomial(n = 1, p = 0.1)

相关问题