2012-01-27 3 views
4

Есть так много рандомизаторов. Some стандартные из них сомнительно медленны. Some претендует на высокое качество и скорость. Some претендуют на более высокое качество. Some претендуют на более быструю и качественную работу. Some претензии скорость, но quality.Лучший выбор для генератора случайных чисел

Одним из фактов, которые я знаю, является то, что mwc-random используется библиотекой бенчмаркинга Criterion, которая говорит сама за себя, и claims очень перспективны.

Поскольку существует по крайней мере два качества к каждому генератору: надежность и качество генерируемого числа - я расколоть вопрос о выборе лучшего генератора на три категории:

  1. Самый быстрый
  2. Один генерации случайного числа наиболее
  3. Тот, имеющий оптимальное сочетание обоих этих качеств у адекватной скорости

Так что которой Почему?

+0

Я бы сказал, что ваша характеристика свойств RNG недостаточна. Например, вы не определяли «качество» или «скорость» в любом месте. Является ли это самым быстрым при производстве Int's? Плавает? Произвольные битовые строки? Безопасны ли номера для криптографических/безопасных потребностей? Является ли он устойчивым к отскоку? Так как все псевдогенераторы в конечном итоге откатываются, что происходит при перевертывании? –

+0

Я внес незначительные исправления в вопрос, но я не думаю, что добавление новых категорий (ints, floats) поможет нам получить хороший ответ. –

+2

Я не думаю, что (3) отвечает за предоставленную вами информацию, поскольку это зависит от того, для чего вы ее используете. – luqui

ответ

8

Я могу говорить только о mwc-random.

  1. Быстро ~ 15ns на Word32 на Phenom II. Если вы хотите измерить, насколько быстро это происходит на вашем компьютере, оно поставляется с эталонным набором. Тем не менее, можно торговать сроком на скорость. XORShift RNG должен быть быстрее, но иметь более короткие периоды 2^32 или 2^64 вместо 2^8222.

  2. Случайность. mwc-random использует алгоритм MWC256 (другое имя: MWC8222), который не является криптографически безопасным, но хорошо работает в тестах случайности. В частности, mwc-случайные проходы dieharder randomness test.