Отметка времени не совсем случайна в том смысле, в каком вы имеете в виду. На самом деле это даже не псевдослучайное в том смысле, что оно всегда увеличивается.
Если вам нужен 80-битный генератор, я реализовал нечто подобное раньше, но с меньшим выходом из функции генератора.
В основном вы используете nextLong
, чтобы получить 64-битное случайное значение. Затем вы копируете оттуда биты в другие 16-битные позиции.
Способ, которым вы можете увидеть 64-битный цикл, состоит в том, что позиции битов, которые вы копируете («набор битов»), отличаются на каждой итерации, и существует простое число итераций (11, 31, 97, ... ).
Так, например, на итерации 0 вы можете скопировать биты 1, 7, 9, 11, 3, ... 12 в другие 16-битовые позиции. На следующей итерации вы скопируете другой набор битов.
Таким образом, когда реальный генератор вращается, вы, скорее всего, будете иметь другой набор бит (из-за его основного размера), и они не будут повторяться.
Конечно, лучшим решением было бы найти подлинный 80-битный генератор - я просто предлагаю это как решение для ускорения работы. Если вы не криптограф или статистик, все будет хорошо (но, опять же, 64-битный генератор будет вызываться дважды со смещенными и объединенными значениями, вероятно).