Инструменты командной строки не работают - OS X El Capitan, Сьерра, Хай Сьерра, Мохаве

На странице Random :

Метод nextLong реализуется классом Random, как будто by:

public long nextLong() {
   return ((long)next(32) << 32) + next(32);
}

Поскольку класс Случайное использует семя только с 48 бит, этот алгоритм не будет возвращать все возможные длинные значения.

Итак, если вы хотите получить Long, вы уже не получите полный диапазон 64 бит.

Я бы предположил, что если у вас есть диапазон, который падает рядом с мощностью 2, вы создаете Long, как в этом фрагменте, например:

next(32) + ((long)nextInt(8) << 3)

, чтобы получить, например, 35-битный диапазон.

543
задан Boji 21 October 2018 в 20:15
поделиться