Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 基于种子生成伪随机数序列_Java - Fatal编程技术网

Java 基于种子生成伪随机数序列

Java 基于种子生成伪随机数序列,java,Java,在Java中,我想生成一个程序,根据一个种子生成一个大约15个数字的字符串。它总是需要从1到9。它似乎是随机的,但每个种子都会吐出相同的序列。 例如,如果键入数字5,它可能输出194639573978476,但如果输入6,它将输出65736204737958,而5将始终输出194639573978476。 如何执行此操作?首先,创建Random的实例,并将种子作为参数: Random rand = new Random(seed); 然后只需要15个号码。可以使用stringbuilder构建

在Java中,我想生成一个程序,根据一个种子生成一个大约15个数字的字符串。它总是需要从1到9。它似乎是随机的,但每个种子都会吐出相同的序列。 例如,如果键入数字5,它可能输出194639573978476,但如果输入6,它将输出65736204737958,而5将始终输出194639573978476。
如何执行此操作?

首先,创建Random的实例,并将种子作为参数:

Random rand = new Random(seed);
然后只需要15个号码。可以使用stringbuilder构建字符串,也可以使用任何其他方式。不应该太难,但这里有一个快速而肮脏的方法:

String result = "";
for(int i = 0; i < 15; i++) {
   result += rand.nextInt() % 9 + 1;
}
字符串结果=”;
对于(int i=0;i<15;i++){
结果+=rand.nextInt()%9+1;
}
请注意,这是一些非常肮脏的编程,这样做是为了简单性和可读性。这是非常糟糕的风格,你不应该复制粘贴这个不改变它

首先:如果使用相同的种子创建了两个Random实例,并且对每个实例进行了相同的方法调用序列,那么它们将生成并返回相同的数字序列

来源:Oracle

由于这个原因,种子需要每次都不同,以生成不同的数字。你可以把时间当作种子。像这样,

Random random = new Random(System.currentTimeMillis());
StringBuffer sb = new StringBuffer();

for (int i = 0; i < 15; i++) {
    sb.append(Integer.toString((random.nextInt(9) + 1)));
}

System.out.println(sb.toString());

希望这有帮助

您好,看一下这篇文章:我已经看到了,但我仍然看不到如何做我想要的事情,只有谷歌“在java中使用随机种子”和“在java中生成随机字符串”。这并不难。
146645139262732
919846574753947
662686147977574