当我为种子值输入42时,它提供一定数量的数字,并在每次使用程序时重现相同的数字。但是我程序中的数字序列与另一个程序中的数字序列不匹配。当种子值都设置为42时,我需要弄清楚如何使它们都提供相同的随机数输出。这是从用户获取种子值的正确格式吗?什么可能导致数字不匹配?谢谢你的帮助。
public class SampleTest {
public static void main(String[] args) {
System.out.println("Please enter a seed value: ");
Scanner in = new Scanner(System.in);
seed = in.nextInt();
Random ranGen = new Random(seed);
答案 0 :(得分:2)
你说你用相同的种子播种随机数发生器,进行相同的调用,但数字序列不同。
我认为对于正在发生的事情有两种合理的解释:
您的两个应用程序实际上不为生成器播种并以相同的方式使用它。本可以犯很多错误,包括意外使用多个发生器(根据@PD的评论)。
应用程序在具有不同发生器类实现的平台上运行。 (这将被Random的javadoc禁用,它指定了应该使用的确切生成器公式。)
找出这两种可能性中的哪一种的方法是编写一个简单的测试应用程序,它只打印由Random
实例生成的数字序列和给定的种子,然后在两台机器上运行它。