Java每次掷骰子的方法returns'doubles'
Java method for rolling dice returns 'doubles' every time
我正在创建一个游戏,用户必须掷两个骰子并根据掷出的骰子做某些事情。我有一种掷骰子的方法,我调用两次来刺激掷两个骰子。
import java.util.Random;
public class test {
public static int dice() {
Random generator = new Random(System.currentTimeMillis());
return generator.nextInt(6) +1;
}
public static void main(String[] args) {
int roll1 = dice();
int roll2 = dice();
System.out.println(roll1);
System.out.println(roll2);
}
}
始终如一地为两个卷返回相同的数字,即使它们是分别调用的。
注意:我用当前时间为随机生成器播种以避免这种情况。
非常感谢任何帮助,我是 Java 的新手!
发生这种情况是因为您每次都在 dice()
方法中创建一个新的 Random
对象。当您多次(在同一毫秒内)快速调用该方法时,Random
个对象将具有相同的种子,该种子基于当前系统时间,并会产生相同的随机数。
解决方案:不要每次都创建新的 Random
对象。创建一次,保存为成员变量,重复使用
import java.util.Random;
public class test {
private static final Random generator = new Random();
public static int dice() {
return generator.nextInt(6) + 1;
}
public static void main(String[] args) {
int roll1 = dice();
int roll2 = dice();
System.out.println(roll1);
System.out.println(roll2);
}
}
我正在创建一个游戏,用户必须掷两个骰子并根据掷出的骰子做某些事情。我有一种掷骰子的方法,我调用两次来刺激掷两个骰子。
import java.util.Random;
public class test {
public static int dice() {
Random generator = new Random(System.currentTimeMillis());
return generator.nextInt(6) +1;
}
public static void main(String[] args) {
int roll1 = dice();
int roll2 = dice();
System.out.println(roll1);
System.out.println(roll2);
}
}
始终如一地为两个卷返回相同的数字,即使它们是分别调用的。
注意:我用当前时间为随机生成器播种以避免这种情况。
非常感谢任何帮助,我是 Java 的新手!
发生这种情况是因为您每次都在 dice()
方法中创建一个新的 Random
对象。当您多次(在同一毫秒内)快速调用该方法时,Random
个对象将具有相同的种子,该种子基于当前系统时间,并会产生相同的随机数。
解决方案:不要每次都创建新的 Random
对象。创建一次,保存为成员变量,重复使用
import java.util.Random;
public class test {
private static final Random generator = new Random();
public static int dice() {
return generator.nextInt(6) + 1;
}
public static void main(String[] args) {
int roll1 = dice();
int roll2 = dice();
System.out.println(roll1);
System.out.println(roll2);
}
}