生成随机数,第一个为零

时间:2018-11-22 11:37:38

标签: java random

我知道如何获取0到0之间的随机数范围。

但是我想知道的是,由于随机数生成器并不是真正的随机数,而是遵循特定的算法,例如,如果您传递20的种子,那么它将始终生成相同的数字序列:17 292,0,9。

所以我明白了。由于它遵循特定的算法,有没有办法强制发生器始终以零或任何其他数字开头?

但我的情况特别是零。

2 个答案:

答案 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)。