如何创建使用种子创建 3 个数字的 java 随机数生成器?

How do I create a java random number generator that creates 3 numbers using seeds?

我正在尝试使用 java 创建一个随机数生成器,并使用用户输入的种子输出 1-8 中的 3 个数字,例如用户输入 1 作为种子,它设置了一个集合3 个数字,然后设置另外 3 个数字,如果用户输入另一个种子,例如 4,那么它会给出一组不同的数字?

我知道如何将 scnr.nextInt(); 用于种子的用户输入,但如何将其用于种子和数字生成器?

SecureRandom呢?您至少可以使用此 class.

定义一些种子

使用 Random 和模运算符使数字在您的范围内 (yourRandomNumber % 8) + 1

您始终可以在 Java 中使用随机 class。

Random.setSeed();
Random.nextInt();

请记住,如果您只想获得 3 个随机数而不需要重现您的结果,那么种子真的没用;只需调用 Random.nextInt(8) 就会给你一个介于 0 和 8 之间的数字(包括 0,不包括 8)。

如果你真的想使用种子,你需要先创建一个随机对象。

Random x = new Random();
x.setSeed(userInput);
x.nextInt(8);

这只会生成一个随机整数,所以一个好主意可能是让用户必须输入至少 3 个整数,你可以 运行 通过(如果你想要一组 3数字)。

例如:用户输入 (usrInput) 为 123

x = usrInput % 10;
usrInput = usrInput/10;
y = usrInput % 10;
usrInput = usrInput/10;
z = usrInput % 10;

//generate Random numbers using x y and z as 3 seeds.
...

编辑:仔细考虑之后,我才意识到您实际上可以调用 nextInt(8) 3 次。种子设置生成器的起点,所以你实际上不需要 3 个用户输入,一个就可以了。

在java中可以使用class生成随机数Random.For示例:

Random randomNumbers=new Random();
int random=randomNumbers.nextInt();

这会生成一个从 –2,147,483,648 到 +2,147,483,647 的随机数。 在上面的代码中,没有给出种子值。所以程序以毫秒为单位的当前系统时间作为种子 value.Thus 上面的语句等价于:

Random randomNumbers=new Random(System.currentTimeMillis());

一个特定的种子总是生成一组相同的随机值numbers.Since时间不断变化,使用一天中的时间作为种子生成的序列总是给出一组唯一的随机值。

现在如何生成一定范围内的随机数? 声明:

Random randomNumbers=new Random(2);
int random=randomNumbers.nextInt(8);

使用种子值 2 生成一个从 0 到 7 的随机数,我们当然可以让用户将 input.The 值 8 称为比例因子。但是在大多数情况下,我们必须移动这些值才能得到他想要的 output.So 上面生成的随机数应该移动 1。因此我们写了一个表达式:

int randomNum=1+randomNumbers.nextInt(8);

现在它生成 1 到 8 范围内的随机数。

为了在一个序列中生成 3 个随机数,您可以使用循环。

for(int i=0;i<3;i++){
  int random=1+randomNumbers.nextInt(8);
  System.out.println(random);
 }