基于种子生成一系列伪随机数

时间:2017-01-08 00:18:59

标签: java

在Java中,我想生成一个程序,该程序根据种子生成大约15个数字的字符串。它总是需要从1到9.它应该是随机的,但是每个种子吐出相同的序列。 例如,如果键入数字5,则可能输出194639573978476,但如果输入6,则输出657362047273958,并且5将始终输出194639573978476。 我该怎么做?

2 个答案:

答案 0 :(得分:0)

首先,创建一个Random实例并将其作为参数提供给它:

Random rand = new Random(seed);

然后只得到15个数字。您可以使用stringbuilder来构建字符串,或者您想要的任何其他方式。不应该太难,但这是一个快速而肮脏的方法:

String result = "";
for(int i = 0; i < 15; i++) {
   result += rand.nextInt() % 9 + 1;
}

请注意这是一些非常糟糕的编程,为了简单和可读性,这样做了。这是非常差的样式,你不应该复制粘贴它而不更改它。

答案 1 :(得分:0)

首先:如果使用相同的种子创建了两个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());
每次运行代码时

示例输出:

146645139262732
919846574753947
662686147977574 

希望这有帮助!