Why random is behaving differently here?

2019-09-20 19:09发布

问题:

Can anybody please explain why the below code gives output 0 1 2 3 4 5 6 7 8 9.

 Random random = new Random(-6732303926L);
    for(int i=0;i<10;i++)
        System.out.println(random.nextInt(10)+" ");

From Java API Random I can see constructor Random(long seed) creates a new random number generator using a single long seed. So, this will be random again, why this gves a fixed output every time?

回答1:

From Java API Random I can see constructor Random(long seed) creates a new random number generator using a single long seed. So, this will be random again, why this gves a fixed output every time?

A seed is used to generate the same output (from random operations) in different runs of the program. So, each time you create the Random object with the same seed, it will output the same result.

Note: The seed you chose has a particular output, that is 0 1 2 3 4 5 6 7 8 9, but it doesn't mean anything. There will also be some other seeds with that same output.



回答2:

It gives a fixed output every time because you are using the same seed. The particular seed you are using happens to give the sequential output: 0 1 2 3 4 5 6 7 8 9.



回答3:

Every weird sequence has a non-zero probability of occurring :)



标签: java random