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