Python 有没有一种有效的方法可以在numpy数组中创建N个贝努利试验的二项式实验?

Python 有没有一种有效的方法可以在numpy数组中创建N个贝努利试验的二项式实验?,python,numpy,bernoulli-probability,Python,Numpy,Bernoulli Probability,假设我有一枚硬币落在头上,概率为p。要做的实验是继续掷硬币x次。这个实验要重复1000次 问题是否有一种有效的/矢量化的方法来生成随机1(概率为p)和0(概率为1-p)的数组 如果我尝试这样的方法: np.full(10,rng().choice((0,1),p= [.3,.7])) 整个数组将填充相同的选择。我见过一些解决方案,它们涉及到一个固定的零与一的比率 a = np.ones(n+m) a[:m] = 0 np.random.shuffle(a) 然而,我不知道如何保持这种设置实

假设我有一枚硬币落在头上,概率为p。要做的实验是继续掷硬币x次。这个实验要重复1000次

问题是否有一种有效的/矢量化的方法来生成随机1(概率为p)和0(概率为1-p)的数组

如果我尝试这样的方法:

np.full(10,rng().choice((0,1),p= [.3,.7]))
整个数组将填充相同的选择。我见过一些解决方案,它们涉及到一个固定的零与一的比率

a = np.ones(n+m)
a[:m] = 0
np.random.shuffle(a) 
然而,我不知道如何保持这种设置实验的随机性

目前,我只是按如下方式循环每个迭代,但一旦实验数量变大,它就会变得非常缓慢

(实际的实验包括在两个连续的头部翻转时终止每个试验,这就是为什么代码中有一个while循环。为了使问题具体化,我不想在这里讨论这个问题。)


如有任何见解,将不胜感激,谢谢

以上评论中列出的@Quang Hong和@Kevin提供的答案。只需使用default_rng()重新发布,以便以后更容易引用。但他们是这里真正的英雄

from numpy import default_rng as rng 

rng().binomial(1, p = .7, size=(10,10))

rng().choice((0,1),p = [.3,.7], size=(10,10))

np.random.choice([0,1],p=[3,y],size=(1000,x))
?我想你可以使用
numpy.random.binomary
,因为伯努利分布只是二项分布的一个特例。这回答了你的问题吗?哦,太棒了,谢谢!我真的不知道我在做什么,所以这很有帮助。因此,我猜使用默认的_rng()代码看起来像rng().二项式(1,p=.7,size=(10,10))或rng().选项((0,1),p=[.3,7],size=(10,10))
from numpy import default_rng as rng 

rng().binomial(1, p = .7, size=(10,10))

rng().choice((0,1),p = [.3,.7], size=(10,10))