Re[3]: обход чисел в хаотичной последовательности
От: subdmitry Россия  
Дата: 19.05.08 03:02
Оценка:
V>Кто сказал, что они обратимые? Операция & в конце обратимая? Где гарантия, что два числа не дадут один и тот же результат по модулю (1<<48)-1 после умножения?

Операцию & в конце надо рассматривать в паре с *. Это просто обрезание лишней части. Умножение по модулю 2**48 (не 2**48-1, аккуратнее!) действительно обратимо, если оно делается на нечетное число. В этом несложно убедиться, если a*n==b*n(mod 2**k), то (a-b)*n==0(mod 2**k), а это возможно только, если a==b (иначе умножение на нечетное n оставляет в произведении (a-b)*n единицу в первом двоичном разряде справа, где есть единица у (a-b).

V>Если даже это так, то насколько взятое наугад число дает хорошие характеристики получаемой случайной последовательности?


Отличные даст. Там такое перемешивание — каждый бит выхода зависит от каждого бита входа и по довольно сложному закону. Соседние числа в такой последовательности будут отличаться довольно радикально.
And if you listen very hard the alg will come to you at last.
Re[4]: обход чисел в хаотичной последовательности
От: subdmitry Россия  
Дата: 19.05.08 03:17
Оценка: 3 (1)
Кстати, насчет применения для решения этой задачи линейного генератора. У выхода такого генератора будет как минимум одна аномалия — он будет выдавать четные числа после нечетных и наоборот. Это старшие биты такого генератора более-менее случайны, не даром же сишный rand() выдает только 15 старших бит зерна. И то у него со статистикой не все в порядке. Я как-то пробовал пожать выход rand()%256 с помощью компрессора paq8 (это такой статистический упаковщик на основе нейронных сетей). Пожался. Насколько помню, где-то на 2%.
And if you listen very hard the alg will come to you at last.
Re[5]: обход чисел в хаотичной последовательности
От: subdmitry Россия  
Дата: 19.05.08 03:44
Оценка:
У моего решения есть пожалуй только один недостаток — оно несколько тяжеловато — 4 64-х битных умножения. Можно сделать и существенно быстрее, но надо будет повозиться с таблицами. Если это действительно критично, пиши, сделаю.
And if you listen very hard the alg will come to you at last.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.