Текущий архив: 2004.12.05;
Скачать: CL | DM;
ВнизНужна инфа: ассемблер, генератор случайных чисел. Найти похожие ветки
← →
Hmm © (2004-11-15 21:57) [0]Здраствуйте.
Собственно, не знаю к кому еще обратиться, посему обращаюсь к вам.
Нужны ресурсы, на которых можно разжиться информацией о темах представленных в заголовке. Меня интересуют алгоритмы, по которым выбирается случайное число, и конкретно реализация их на ассемблере (хотя можно и на C++, Паскале ну или на худой конец в "устной форме").
Заранее, спасибо.
← →
Burmistroff (2004-11-15 22:22) [1]Где-то в http://delphimaster.net/view/14-1100334597/
Приведен квадратичный конгруентный метод. Обычный, можно найти на algolist.manuals.ru
Фишка в том, что я не далее как позавчера писал это дело на асме (правда 16битном, под dos), так что могу предоставить прогу:
http://mc.webm.ru/5/rand.zip
Результаты
http://mc.webm.ru/5/rand1.gif
и вид собственно процедур
;function Random(@prev_rnd) - обычный конгруентный генератор СЧ
;в ax"е - адрес предыдущего рандома (byte)
Random proc
push ax
push dx
push cx
push si
mov si, ax
mov ax, word ptr [si]; ax:=prev_rnd
mov dx, 106
mul dx ; ax:=ax*106
add ax, 1283 ; ax:=ax+1283
mov cx, 5ffh
div cx; dx:=ax mod cx
mov word ptr [si], dx; prev_rnd:=dx
pop si
pop cx
pop dx
pop ax
ret
endp
;procedure Randomize();
;в ax"е - адрес рандома (byte)
Randomize proc
push ax
push cx
push dx
push si
mov si, ax
xor ax, ax
mov ah, 2Ch
int 21h
mov ah, ch
add cl, 12
xor ax, cx
shl ax, 3
add ah, dh
dec al
add al, dl
add ah, dl
sub ax, 5
mov bx, word ptr[si]
shl bx, 1
xor bx, ax
jz @skip
sub bx, 23
@skip:
mov ax, bx
mov word ptr[si], ax
pop si
pop dx
pop cx
pop ax
ret
endp
← →
Burmistroff (2004-11-15 22:24) [2]BTW: там вранье - не byte, а word используется для хранения рандома,и также, моя реализация метода (писалась от балды) иногда дает очень плохие результаты.
← →
Hmm © (2004-11-15 22:32) [3]спасибо.
Страницы: 1 вся ветка
Текущий архив: 2004.12.05;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.034 c