2016-12-10 15 views
0

我想用一个给定的密度d(非零条目的百分比)作出布尔值(0或1)的n×n矩阵。我相信可以用随机模块和列表理解来做到这一点。Python 3.5:列出对给定密度的矩阵的理解?

对于这个问题,让我们不要考虑sci.py或num.py

要列出清单:

import random 
n = 5 
[[random.randint(0,1) for column in range(n)] for row in range(n)] 

[[0, 0, 0, 0, 1], 
[1, 0, 1, 0, 0], 
[0, 1, 0, 1, 1], 
[1, 1, 1, 0, 0], 
[0, 1, 1, 0, 0]] 

,我们有一个矩阵。问题是密度将永远是≈.5

那么,我们如何改变内部列表理解,给我们一个与密度相等的概率值呢?

[[0 if <condition> else 1 for column in range(n)] for row in range(n)] 

回答

1

我建议0 if random.random() > d else 1

+0

谢谢你的男人,我不能相信我忘记使用实物:P – SumNeuron

0

使用random.random0.01.0之间返回float

>>> import random 
>>> import pprint 
>>> m = [[0 if random.random() < 0.3 else 1 for _ in range(5)] for _ in range(5)] 
>>> pprint.pprint(m) 
[[1, 1, 1, 1, 1], 
[1, 1, 1, 1, 1], 
[1, 1, 0, 0, 1], 
[0, 1, 0, 0, 1], 
[0, 0, 1, 1, 1]] 
+0

这是一个密度0.7 – Gribouillis

+0

@Gribouillis是 – niemmi