я использую такой рандомизатор:

Код:
rnd:      ld a,(rnd_data_e - 1)
          ld hl,rnd_data

          dup rnd_data_e - rnd_data - 1
          add a,(hl)
          ld (hl),a
          inc hl
          edup

          add a,(hl)
          ld (hl),a
          ret

rnd_data: db "HBF^db"
rnd_data_e:
от длины и "рандомности" строки в rnd_data зависит рандомность генератора.
чем длинее строка - тем рандомнее числа, но тем медленней работает.
4-8 символов обычно хватает для любых случаев.

чтоб в заданных пределах, то это уже сложней.
если надо от N до N+(2^x)-1, то можно так:

например если надо от 30 до 61, то пойдёт такой метод:

and 31
add a,30

если в совсем любых пределах, то без умножения не получится.