我尝试使用Python 2.7创建一个带有权重的连接,间接图。以下是我到目前为止写的剧本。
for i in xrange(0, 10):
for j in xrange(0, (int)(10*random.random())):
lst2 = random.sample(range(20), 1)
j = [(i, lst2)]
print(j)
我试图获得以下格式:x y w,其中(x,y)构成顶点而w是权重。目前我能够在生成我想要的数字时出现随机数量的x,但是我遇到的问题是试图生成我的y并使它们无法导致重复顶点(特别是在例如(1,3)和然后(3,1))。下面是我当前输出的一小部分。
[(1, [6])]
[(1, [1])]
[(1, [15])]
[(1, [12])]
[(1, [16])]
[(2, [9])]
[(3, [10])]
[(3, [19])]
[(4, [17])]
[(4, [18])]
[(4, [17])]
如何在保持生成随机数量的x的同时保持顶点不重复?另外,我该如何添加重量?我尝试了以下操作,但结果只是生成了额外的对。
for i in xrange(0, 10):
for j in xrange(0, (int)(10*random.random())):
lst2 = random.sample(range(20), 1)
lst3 = random.sample(range(10), 10)
j = zip((i, lst2),lst3)
print(j)
答案 0 :(得分:0)
你可以这样做:
import random
nodeCount = 6
vertexCount = 10
vertices = {}
while len(vertices) < vertexCount:
x = random.randint (1, nodeCount)
y = random.randint (1, nodeCount)
if x == y: continue
#comment the following line if the graph is directed
if y < x: x, y = y, x
w = random.random ()
vertices [x, y] = w
#just for debug
for (x, y), w in vertices.items ():
print ('Vertex from {} to {} with weight {}.'.format (x, y, w) )