Поиск семян для 5-байтового PRNG
Старая идея, но с тех пор я не могНе могу найти какой-то достаточно хороший способ решить возникшую проблему. Так что я "изобрел" (см. ниже) очень компактный и, на мой взгляд, достаточно хорошо работающий PRNG, но я могуt понять алгоритмы для построения подходящих начальных значений для него на больших битовых глубинах. Мое текущее решение просто грубое, оноВремя работы с O (n ^ 3).
Генератор
Моя идея пришла от XOR кранов (по сутиЛРСОС) некоторые старые 8-битные машины, используемые для генерации звука. Я возился с XOR в качестве базы на C64, пытался собрать коды операций и испытал результат. Окончательное рабочее решение выглядело так:
asl
adc #num1
eor #num2
Это 5 байтов на 6502. С правильно выбранными num1 и num2 в аккумуляторе он перебирает все 256 значений в кажущемся случайном порядке, то есть он выглядит достаточно случайным, когда используется для заполнения экрана (я написал немного 256b демо тогда). Есть 40 подходящих Num1 & num2 пары для этого, все дают прилично выглядящие последовательности.
Понятие может быть хорошо обобщено, если выражено в чистом C, это может выглядеть так (BITS
битовая глубина последовательности):
r = (((r >> (BITS-1)) & 1U) + (r < 1) + num1) ^ num2;
r = r & ((1U