Пока что я склоняюсь что это один из вариантов фибоначчиевых, но вот хотелось бы подробнее.
Грубо говоря работает он так.
Есть два числа
А и В
(собственно А и возвращается как случайное)
а для «встряхивания» используется
(A+B) mod m
а потом сдвиг влево с переносом
После чего полученное число пишется в В, а то что было в В до этого переносится в А
На ASM он выглядит примерно так. mov ax,seed1
push cx
push bx
mov bx,seed2
mov cx,ax
add cx,bx
rol cx,01h
mov seed1,bx
mov seed2,cx
pop bx
pop cx
ret
.data
seed1 DW 0005h
seed2 DW 0011h
В том то и дело что у меня нет опыта в этих делах, мне бы направление куда гуглить… (хотя бы ссылку на какой список разных алгоритмов, а то всё что я нагуглил это 3-4 названия и кучу флуда)
Магические константы 0x0011 и 0x0005 действительно встречаются в генераторе Фибоначчи, но на этом сходство заканчивается. Во-первых, схема Фибоначчи не использует сдвиги, только сложение/вычитание. Во-вторых, там константы 0x0011 и 0x0005 задают не сами числа, а индексы в массиве предыдущих сгенерированных значений. Думаю, это самопал какой-то.
Я встретил его в одном из журналов времён спектрума (т.е вероятность что это самопал весьма велика) но если это не так, и кто-то знаком с алгоритмом поближе, то я бы не против узнать о нём чуть поболее чем просто что «он такой и выглядит вот так»