如何在Java中从随机中获取种子?

2022-09-01 11:42:01

我正在为某些对象创建深度克隆。该对象包含一个 .Random

从 中检索种子是否为好做法?如果是这样,如何?没有 .RandomRandom.getSeed()


答案 1

获取种子的一种更简单的方法是生成一个种子并将其存储为种子。我正在将这种方法用于游戏,并希望让玩家选择生成完全相同的世界,如果他也愿意的话。因此,首先,我创建一个没有种子的 Random 对象,然后让该对象生成一个随机数,并在另一个随机对象中将其用作种子。每当玩家想要关卡的种子时,我都会把它存储在某个地方。默认情况下,游戏仍然是随机的。

    Random rand = new Random();
    //Store a random seed
    long seed = rand.nextLong();
    //Set the Random object seed
    rand.setSeed(seed);

    //do random stuff...

    //Wonder what the seed is to reproduce something?
    System.out.println(seed);

答案 2

您可以做的是自己获取系统时间,然后用它来设定随机数生成器的种子,并将其存储在某个地方或打印出来,以便以后可以使用它。

long rgenseed = System.currentTimeMillis();
Random rgen = new Random();
rgen.setSeed(rgenseed);
System.out.println("Random number generator seed is " + rgenseed);