Python 3.5:具有给定密度的矩阵的列表理解?

时间:2016-12-10 16:19:08

标签: python list matrix

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

对于这个问题,我们不要考虑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)]

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

使用random.randomfloat0.0之间返回1.0

>>> 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]]