【发布时间】:2020-01-17 19:09:41
【问题描述】:
首先:我主要是自学成才,所以如果我不知道正确的术语或犯了一些新手错误,请原谅我。
所以,我正在用种子制作一个随机变量。当您从变量中获取“下一个”时,它会从该种子中获取下一个值。有没有办法在随机变量中记录您的位置?例如,理想情况下,以下代码将输出两个相同的字符串:
//My attempt to save my location in a Random:
r = new Random(5);
for (int i = 0; i < 10; i++) {
System.out.print(r.nextInt(2));
if (i == 9) {
System.out.print(" ");
}
}
//====================================
System.out.println("\n-------------");
r = new Random(5);
for (int i = 0; i < 5; i++) {
System.out.print(r.nextInt(2));
}
r = new Random(r.nextLong());
System.out.print(" ");
for (int i = 0; i < 5; i++) {
System.out.print(r.nextInt(2));
}
而是返回:
1001010100 1100110011
-------------
1001010100 0010010111
-------------
有没有办法“记住”我的位置,这样我就可以创建一个新的随机变量,该变量将在前一个停止的地方继续?最好不要序列化变量——它不会是世界末日,但我想知道是否还有其他方法。
【问题讨论】:
-
播种不是这样的。如果你删除
r = new Random(r.nextLong()),你会得到同样的结果。 -
只是好奇为什么你需要继续使用相同的种子,因为无论如何你都会生成新的数字。
-
我正在寻找一种方法来保存种子中的当前位置,以便保存/重新加载游戏的各种尝试不会产生不同的结果。显而易见的答案是序列化随机变量,但我一直在寻找一种不涉及序列化的方法。