Ладно. Проехали.
Ладно. Проехали.
программирование сильно возрастает!
https://zx-pk.ru/threads/474-deb-ass...ull=1#post7841
Про период линейного конгруэтного генератора не подскажу, но подскажу по другим генераторам: LFSR или Xorshift. Период этих генераторов в точности равен 2^N-1, где N - количество бит состояния. При итеративном исполнении процедуры генератора его состояние меняется на новое; каждое состояние возникает ровно один раз за период. Так что такие генераторы можно и нужно использовать для вещей вроде попиксельной замены экрана. Кстати, в игре Batman The Movie используется именно LFSR.
Если N=16, то период будет 65535 (на 1 меньше, так как состояние "все нули" не возникает при работе генератора). Если N=4 - то период будет 15.
Можно зайти и из общих соображений. Любой псевдослучайный генератор имеет некое состояние, которое сохраняется между вызовами. Если для хранения состояния используется N бит - то период повторения не может быть больше 2^N. Может быть меньше (как в случае LFSR, на 1 меньше), или даже намного меньше (при использовании "плохих" LFSR или констант для линейного конгруэнтного). Если период меньше 2^N - то некоторые комбинации бит состояния за период не возникают. Но те, которые возникают, появляются один и только один раз.
В случае линейного конгруэнтного генератора, так как его состояние является остатком от деления на некоторое число M - то период не может быть больше, чем M. Если правильно подобрать константы - то наверное, можно сделать, чтобы он был строго равен M, что тебе и требуется.
а массив можно менять в процессе выборки?
некоторое время назад решал похожую проблему в лоадере:
https://www.dropbox.com/scl/fi/0l0cg...9o4ocm0rq&dl=0
Последний раз редактировалось Bedazzle; 09.04.2024 в 15:21.
Heavy on the disasm
Eric and the disasm
Mask 3: Venom strikes disasm
Bard's disasm
Последний раз редактировалось 0xDEAD; 10.04.2024 в 00:08.
программирование сильно возрастает!
https://zx-pk.ru/threads/474-deb-ass...ull=1#post7841
Здравствуйте.
Как вычислить (Байт Mod 7) ?
Результат: 0 - 6.
поделить на 7 сдвигами
Код:;A=A mod 7 ld c,a xor a ld b,#08 label2 rl c adc a,a sbc a,7 jr nc,label1 add a,7 label1 djnz label2
Мои проекты
AndTorp (01.09.2024)
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)