Ich erstelle ein Objekt mit den gleichen Parametern mehrmals hintereinander. Das Objekt hat eine zufällige Methode (mit Math.random()) darin, von der ich weiß, dass sie jedes Mal eine andere Zahl zurückgeben sollte, aber jedes Mal innerhalb des Programms erzeuge ich ein neues Objekt dieser Klasse und rufe die Methode auf, die es zurückgibt der gleiche Wert. Wie soll ich das beheben?Die Zufallszahl kann nicht jedes Mal generiert werden, wenn das Objekt erstellt wird
Ort, an dem ich die Methode Vertrag nennen:
for (int i = 0; i < 212000; i++){
Contractions c = new Contractions(a, b);
temp = c.contract();
if (temp < min){
min = temp;
}
if (i%1000 == 0){
System.out.println(min);
}
}
Methode:
while (vertices.size() > 2){
Edge randEdge = edges.get((int) (Math.random()*edges.size()));
vertices.remove(randEdge.getTwo());
for (int i = edges.size() - 1; i >= 0; i--){
if (edges.get(i).getOne() == randEdge.getTwo()){
edges.get(i).setOne(randEdge.getOne());
}
if (edges.get(i).getTwo() == randEdge.getTwo()){
edges.get(i).setTwo(randEdge.getOne());
}
}
edges.remove(randEdge);
removeSelfLoops();
return edges.size();
Kantenklasse:
package Contractions;
public class Edge {
Vertex one;
Vertex two;
public Edge(Vertex one, Vertex two){
this.one = one;
this.two = two;
}
public boolean isEqual(Edge other){
if (other.one == this.one && other.two == this.two){
return true;
}
if (other.two == this.one && other.one == this.two){
return true;
}
return false;
}
public Vertex getOne(){
return one;
}
public Vertex getTwo(){
return two;
}
public void setOne (Vertex v){
one = v;
}
public void setTwo (Vertex v){
two = v;
}
public String toString(){
return one + "; " + two;
}
}
einige code vielleicht? – Damiano
Fügen Sie ein [mcve] ein. – erickson
Wir müssen mehr von Ihrer 'Edge' Klasse sehen, um dieses zu debuggen –