Меню сайта
Мини-чат
Чтобы добавить сообщение, необходимо авторизоваться.
Главная » Статьи » Не стандартные примеры на Delphi » Алгоритмы

Генератор случайных чисел
Ниже я привожу ассемблерную версию генератора случайных чисел, взятую мною из журнала Dr Dobbs Journal несколько лет тому назад. Попробуйте это, у меня данный алгоритм показал лучшие результаты.


    function __R( range : word ) : word; assembler;
asm
mov                ax,        Word(System.RandSeed)   { DS:[003eH] }
mov                bx, Word(System.RandSeed+2) { DS:[0040H] }
mov                cx,        ax
mul                CS:word ptr [0598H]
shl                cx,        1
shl                cx,        1
shl                cx,        1
add                ch, cl
add                dx, cx
add                dx,        bx
shl                bx,        1
shl                bx,        1
add                dx,        bx
add                dh,        bl
mov                cx,        0005H
@1:
shl                bx,        1
loop        @1
add                dh,        bl
add                ax,        0001
adc                dx,        0000
mov   word(System.RandSeed), ax        { [003eH],        ax }
mov                word(System.RandSeed+2), dx { [0040H],        dx }

xor                ax,        ax
mov                bx,        range
or                 bx,        bx
je                 @2

xchg               dx,        ax
div                bx
xchg               dx,        ax
@2:
end
Категория: Алгоритмы | Добавил: DelphiAiX (28.04.2012)
Просмотров: 1030 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]