Сборник по задачам и примерам Assembler

Dogecoin смотрите на ru99bitcoins.com. | купить авиабилеты без комиссии онлайн. | Смотри здесь бургеры +в самаре адреса. | Пермь центр дератизации. |

Мультипликативный конгруэнтный метод генерации последовательности случайных чисел - часть 2


xor al,al

rol ax,cl ;в al случайное число

;вывод в файл - командная строка rand_mult_cong.exe > p.txt

mov x,al

mov dl,al

mov ah,02

int 21h

jmp cycl

end_cycl:

mov ax,4c00h

int 21h

end main

Используя эти программы, можно получить последовательность случайных чисел, содержащую 32 значения — это ее период. Чтобы увеличить период, необходимо каким-либо способом сгенерировать значения а или х, удовлетворяющие приведенным выше ограничениям. Так, значение а можно вычислить, используя фрагмент:

.data

:.........

divider db 8

.code

вычисляем а исходя из соотношения:

:а mod 8=5

:одним из способов получить значение а (т > а)

удовлетворяем условию a mod 8 = 5

m2: mov al .a

xor ah,ah

div divider

cmp ah,5 :остаток 5?

je ml

cmp ah,3 :остаток 3?

je ml

inc a

jmp m2 ml: ;теперь а найдено до конца

Изменить (увеличить) период можно, корректируя значение т, для чего необходимо будет исправить соответствующие команды в программах rand_mult_ cong_l.asm и rand_mult_cong_2.asm, ориентированные на определенную разрядность регистров. Существует другая возможность увеличения периода — использование смешанного конгруэ}1т)юго метода генерации последовательности случайных чисел.




- Начало -  - Назад -  - Вперед -