Мне было интересно с текущей реализацией java 1.7 класса Random, возможно ли, чтобы код ниже генерировал два раза один и тот же случайный длинный?
Random rand = new Random((long) "some seed".hashCode());
while(rand.nextLong() != rand.nextLong()){
}
System.out.println("Will this text ever be on the console?");
Источник Java для nextLong() и next();
public long nextLong(){
return ((long) next(32) << 32) + next(32);
}
protected synchronized int next(int bits){
seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L << 48) - 1);
return (int) (seed >>> (48 - bits));
}
Я бы ответил на этот вопрос ложным, потому что я думаю, что случайный метод, используемый java, не повторяет одинаковые числа за период 2 ^ 48, поэтому он никогда не будет генерировать два одинаковых числа подряд. Правильно ли это?