我知道如何获取0到0之间的随机数范围。
但是我想知道的是,由于随机数生成器并不是真正的随机数,而是遵循特定的算法,例如,如果您传递20的种子,那么它将始终生成相同的数字序列:17 292,0,9。
所以我明白了。由于它遵循特定的算法,有没有办法强制发生器始终以零或任何其他数字开头?
但我的情况特别是零。
答案 0 :(得分:5)
无需破解Random类,只需编写自己的类即可:
public class RandomGenerator {
private int bound;
private Random random;
private boolean firstCall = true;
public RandomGenerator(int bound, long seed) {
this.bound = bound;
random = new Random(seed)
}
public int next() {
if (firstCall) {
firstCall = false;
return 0;
}
return random.nextInt(bound);
}
}
答案 1 :(得分:0)
public static void main (String[] args) throws java.lang.Exception
{
int x = -1;
long seed = 0;
int xxx = 100;
while(x!=0){
Random s = new Random(seed++);
x = s.nextInt(xxx);
}
System.out.println("seed " + (seed-1) + " gives " + new Random(seed-1).nextInt(xxx));
}
这将找到一个种子,对于给定的模数,下一个int将为零。 (本例中为18)。