Количественно оценить неслучайность специализированного генератора случайных чисел? - PullRequest
9 голосов
/ 01 июля 2011

Я только что прочитал этот интересный вопрос о генераторе случайных чисел, который никогда не генерирует одинаковое значение три раза подряд.Это явно отличает генератор случайных чисел от стандартного универсального генератора случайных чисел, но я не уверен, как количественно описать, как этот генератор отличается от генератора, у которого не было этого свойства.

Предположим, что выпередал мне два генератора случайных чисел, R и S, где R - генератор истинных случайных чисел, а S - генератор истинных случайных чисел, который был модифицирован так, чтобы никогда не выдавать одно и то же значение три раза подряд.Если вы не сказали мне, какой из них был R или S, единственный способ обнаружить это - запустить генераторы, пока один из них не выдаст одно и то же значение три раза подряд.

Мой вопросэто - есть ли лучший алгоритм для разделения двух генераторов?Влияет ли ограничение не производить одно и то же число трижды каким-либо образом на наблюдаемое поведение генератора иным образом, кроме как предотвращать появление трех одинаковых значений подряд?

Ответы [ 4 ]

2 голосов
/ 02 июля 2011

Как следствие теоремы Райс , невозможно определить, что есть что.

Доказательство: пусть L будет выходом нормального ГСЧ. Пусть L 'будет L, но со всеми удаленными последовательностями длины> = 3. Некоторые ТМ распознают L ', но некоторые нет. Следовательно, по теореме Райс определение, принимает ли ТМ L ', не разрешимо.

Как уже отмечали другие, вы можете сделать утверждение вроде: «Он выполнил N шагов без повторения три раза», но вы никогда не сможете совершить скачок к «он будет никогда повторять цифра три раза. " Точнее, существует хотя бы одна машина, для которой вы не можете определить, соответствует ли она этому критерию.

Предостережение: если бы у вас был действительно случайный генератор (например, ядерный распад), вполне возможно, что теорема Райс не будет применима. Моя интуиция заключается в том, что теорема все еще справедлива для этих машин, но я никогда не слышал, чтобы она обсуждалась.

РЕДАКТИРОВАТЬ : вторичное доказательство. Предположим, что P(X) с высокой вероятностью определяет, принимает ли X L'. Мы можем построить (бесконечное число) программ F, таких как:

F(x): if x(F), then don't accept L'
      else, accept L'

P не может определить поведение F(P). Более того, скажем, P правильно предсказывает поведение G. Мы можем построить:

F'(x): if x(F'), then don't accept L'
       else, run G(x)

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

2 голосов
/ 01 июля 2011

Если S определяется отклонением от R, то последовательность, полученная с помощью S, будет подпоследовательностью последовательности, полученной с помощью R. Например, взяв простую случайную переменную X с равной вероятностью 1 или 0, вы получите:

R = 0 1 1 0 0 0 1 0 1
S = 0 1 1 0 0 1 0 1

Единственный реальный способ различить эти два - искать полосы. Если вы генерируете двоичные числа, то полосы невероятно распространены (настолько, что почти всегда можно различить случайную последовательность из 100 цифр и ту, которую записывает студент, пытаясь быть случайной). Если числа взяты из [0,1] равномерно, то полосы встречаются гораздо реже.

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

1 голос
/ 01 июля 2011

Поскольку вы определили, что они различаются только по этому конкретному свойству, лучшего алгоритма для их различия нет.

Если вы делаете тройные значения ранда, конечно, генератор S будет генерировать все остальные тройки чуть чаще, чем R, чтобы компенсировать пропущенные тройки (X,X,X). Но чтобы получить значительный результат, вам потребуется гораздо больше данных, чем будет стоить найти любое значение три раза подряд в первый раз.

0 голосов
/ 01 июля 2011

Возможно использовать ЛОР (http://fourmilab.ch/random/)

...