Java Случайное семя - PullRequest
       47

Java Случайное семя

3 голосов
/ 27 апреля 2011

Мне нужно протестировать Java-программу 20 раз, и мне нужно установить случайное начальное число, чтобы тесты можно было повторить. Если бы я должен был установить начальное начальное значение равным 0, а затем увеличивать его на 1 при каждом запуске (т. Е. 1,2,3 и т. Д.), Этот метод все еще гарантировал бы полную случайность, даже если начальные значения не далеко друг от друга?

Спасибо

Ответы [ 4 ]

6 голосов
/ 27 апреля 2011

Любое начальное число будет обеспечивать тот же уровень случайности, что и любое другое начальное число для стандартного PRNG , такого как тот, который включен в Java. Так что для тестов можно использовать увеличивающееся семя.

Возможно, вы захотите использовать лучший генератор случайных чисел. Тот, который включен в Java, дает заметные повторяющиеся шаблоны, если вы представляете значения в виде изображения (я не могу найти ссылку от руки, но помню, что она очевидна). Я бы порекомендовал Mersenne Twister (есть версии Java ) в качестве альтернативы, которая быстра и имеет очень длительный период, поэтому вы не сможете легко увидеть шаблоны.

2 голосов
/ 27 апреля 2011

Если вы используете начальное число 0, последовательность случайных чисел будет повторяться с этой точки. Вам нужно будет использовать другое случайное семя, только если вы хотите другую последовательность. то есть вы должны иметь возможность устанавливать семена один раз за тест.

1 голос
/ 27 апреля 2011

Почему бы просто не использовать текущее время в качестве начального числа?то есть System.currentTimeMillis()?

0 голосов
/ 27 апреля 2011

Вам нужен номер или строка?Я использую UUID.randomUUID().toString(), чтобы получить UUID для моих тестов, когда мне нужны строки, но если вам нужно число, то вы можете использовать System.nanoTime().

...