在python中创建具有概率的二进制随机矩阵

在python中创建具有概率的二进制随机矩阵,python,numpy,matrix,probability,Python,Numpy,Matrix,Probability,我是python新手。我想写一个函数,生成一个随机的nxm二进制矩阵,概率p的每个值为0 我所做的 def randbin(M,N,P): # function to generate random binary matrix mat = (np.random.rand(M,N)>=P).astype(int) return mat y = randbin(5,4,0.3) 每次打印输出时,我都没有按照估计的概率得到结果。我不知道我

我是python新手。我想写一个函数,生成一个随机的
nxm
二进制矩阵,概率p的每个值为0

我所做的

def randbin(M,N,P):              # function to generate random binary matrix    
    mat = (np.random.rand(M,N)>=P).astype(int)
    return mat  

y = randbin(5,4,0.3)

每次打印输出时,我都没有按照估计的概率得到结果。我不知道我做错了什么。

我看不出你的方法有什么问题。。。生成概率P为0s的0s和1s的随机矩阵的更好方法是使用
random.choice

def randbin(M,N,P):  
    return np.random.choice([0, 1], size=(M,N), p=[P, 1-P])

为了更好地理解,请查看文档。

如果有效,请不要忘记在我的答案(欢迎使用stack)左侧勾选复选标记,将帖子标记为已回答。大小始终为元组。例如,我想在上面的函数中创建一个大小为100的二进制矩阵。i、 e.np.random.choice([0,1],size=(100)。然后它给了我一个错误:只有length-1数组可以转换为Python scalartuples用于矩阵。对于100x100矩阵,使用
size=(100100)
。对于100个元素的数组,使用
size=100
size=(100,)
。有时这是行不通的。虽然我给出了不等的概率,但有时我得到了相等的
0
1
。这正是概率所能做到的!当你掷硬币10次时,你可能有10张脸,这种情况就会发生。如果这种行为困扰你,你需要阅读概率。