/* * "...At each time-step, we choose NeY vertices at random, with * probabilities proportional to Zi. For each vertex chosen we * choose one of its neighbors uniformly at random and delete the * connection to that neighbor...." */ private void removeRandomFriendship() { removalMap.clear(); double zeeSum = 0; int nEdges = 0; for (int i = 0; i < numNodes; i++) { JinGirNewNode node = (JinGirNewNode) agentList.get(i); int degree = node.getOutDegree(); if (degree > 1) { removalMap.put(zeeSum, node); zeeSum += degree * (degree - 1); } nEdges += degree; } nEdges = nEdges / 2; int numPicks = (int) Math.round(nEdges * removeProb); for (int n = 0; n < numPicks; n++) { double pick = Random.uniform.nextDoubleFromTo(0, zeeSum); JinGirNewNode node = (JinGirNewNode) removalMap.get(pick); node.removeFriend(); } }