2016-12-10 25 views
0

私は与えられた密度d(ゼロでないエントリのパーセント)でブール値(0または1)のn x n行列を作りたいと思います。私はランダムモジュールとリストの理解でこれを行うことができると信じています。Python 3.5:与えられた密度の行列に対するリストの理解?

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

、我々は行列があります。この問題については

はリストのリストを作るためにsci.pyまたはnum.py

を考慮しています。問題は密度が常に≈になることです。.5

したがって、密度と同等の確率を持つ値1を与えるために内部リストの理解度をどのように変更しますか? 0.01.0floatを返すために

[[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.random:私は私を信じることができない

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

関連する問題