2017-03-28 59 views
0

我是python的新手。我想寫一個函數產生一個隨機的nxm二進制矩陣,每個值爲0概率爲p。用python概率創建二元隨機矩陣

我做了什麼。

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) 

每次打印輸出時,我都沒有按照估計的概率得到結果。我不知道我做錯了什麼。

回答

0

我沒有看到你的方法問題...一個更好的方法來生成0和1與0的概率P的隨機矩陣是使用random.choice

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

爲了更好地理解,看看random.choice文檔。

+0

非常感謝..我一定會嘗試它.. – sumsan

+0

如果它能正常工作,請不要忘記標記帖子的答案是通過在我的答案左邊勾上覆選標記(並歡迎使用堆棧) – Derlin

+0

大小總是一個元組。例如我想在上面的函數中創建一個尺寸爲100的二進制矩陣。即np.random.choice([0,1],size =(100)。然後它給了我一個錯誤:只有長度爲1的數組可以轉換爲Python標量 – sumsan