Не знаю, может где-то уже что-то подобное пробегало, может кому-то пригодится.
Быстрый (116T) генератор псевдослучайных чисел на основе LCG с неплохой равномерностью:
Код:Random8 ; breaks A,HL,DE, returns pseudo-random u8 value in A ; consumes 116T including RET ; ALGO: u16 seed = (seed << 7) - seed + 251 ; ALGO: result = (u8) (seed + seed >> 8) LD HL,#55AA ; 10T, 10T .seed EQU $-2 ; initialize Random8+1 (seed) with different u16 values to get different sequences LD E,L ; 4T, 14T LD D,H ; 4T, 18T XOR A ; 4T, 22T SRL H ; 8T, 30T RR L ; 8T, 38T RRA ; 4T, 42T LD H,L ; 4T, 46T LD L,A ; 4T, 50T SBC HL,DE ; 11T, 61T LD DE,251 ; 10T, 71T ADD HL,DE ; 11T, 82T LD (.seed),HL ; 16T, 98T LD A,L ; 4T, 102T ADD A,H ; 4T, 106T RET ; 10T, 116T


Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 

