gpt4 book ai didi

java - 无法获取每次创建对象时生成的随机数

转载 作者:行者123 更新时间:2023-12-01 09:38:27 25 4
gpt4 key购买 nike

我一遍又一遍地多次创建具有相同参数的对象。该对象有一个随机方法(使用 Math.random()),我知道每次都应该返回不同的数字,但每次在程序中我创建该类的新对象并调用它的方法时,它都会返回相同的值。我该如何解决这个问题?

我调用方法契约的地方:

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);
}
}

方法:

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();

边缘类别:

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

最佳答案

尝试使用 Java Random 及其 nextInt(intbound) 方法。令边界为包含边的列表的长度。这将返回一个介于 0(含)和绑定(bind)(不含)之间的随机整数。

您现在使用的方法返回一个介于 0(含)和 1(不含)之间的数字。然后将结果转换为 int。由于您使用的生成器,您似乎没有获得预期的分布类型。

关于java - 无法获取每次创建对象时生成的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38644325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com