Мне нужно семя для экземпляра класса С# Random
, и я читал, что большинство людей используют текущий счетчик тиков времени для этого. Но это 64-битное значение, и семя должно быть 32-битным значением. Теперь я подумал, что метод GetHashCode()
, который возвращает int
, должен обеспечивать разумно распределенное значение для своего объекта, и это можно использовать, чтобы избежать использования только младших 32-бит количества отсчетов. Однако я не мог найти ничего о GetHashCode() типа данных Int64
.
Итак, я знаю, что это не имеет большого значения, но будет работать так же хорошо, как я думаю (я не могу случайно и случайным образом), или, может быть, он работает так же, как с помощью (int)DateTime.Now.Ticks
в качестве семена? Или, может быть, это еще хуже? Кто может пролить свет на это.
int seed = unchecked(DateTime.Now.Ticks.GetHashCode());
Random r = new Random(seed);
Изменить: Почему мне нужно семя и не просто позволить конструктору Random()
выполнить эту работу? Мне нужно отправить семя другим клиентам, которые используют одно и то же семя для одной и той же случайной последовательности.