我有一个加权图,我用一个邻接矩阵存储。矩阵如下所示:
v1 v2 v3 v4
v1 0 1 0 2
v2 1 0 3 0
v3 0 3 0 0
v4 2 0 0 0
现在我想在均匀边缘随机选择一个。我已经尝试过这样做,而且它似乎有效。但问题是有时它会找到边缘 (v1,v1) 或 (v2,v2) 或 ... 。但在我的图中,这条边永远不存在。
那么如何在没有这个问题的情况下选择均匀边缘的随机数呢?
这是我的代码:
int countEdges = matrix.getCountEdges();
Random rand = new Random();
int randomNum = rand.nextInt((2*countEdges));
int x=0,y=0,s=0;
while(s<randomNum) {
s = s + matrix.getamountOfEdgesOnVertex(x);
x = x + 1;
}
randomNum = randomNum - (s-(matrix.getamountOfEdgesOnVertex(x)));
s = 0;
while(s<randomNum) {
s = s + matrix.getWeightOfEdge(x, y);
y = y + 1;
}
System.out.println("x: "+x+" y: "+y);