Javadoc метода nextLong() класса Random указывает, что
Поскольку класс Random использует семя только с 48 бит, этот алгоритм не будет возвращать все возможные длинные значения. (Случайный javadoc)
Реализация:
return ((long)next(32) << 32) + next(32);
То, как я вижу это, заключается в следующем: чтобы создать любое возможное долгое время, мы должны сгенерировать любую возможную битовую схему из 64 бит с равной вероятностью. Предполагая, что вызовы next(int)
дают нам 32 случайных бита, тогда объединение этих битов будет последовательностью из 64 случайных бит, и, следовательно, мы генерируем каждый 64-битный шаблон с равным правдоподобием. И поэтому все возможные длинные значения.
Я полагаю, что человек, который написал javadoc, знает лучше и что мои рассуждения как-то порочны. Может ли кто-нибудь объяснить, где мои рассуждения неверны и какие долготы будут возвращены?