Может у кого есть процедуры
1 - генератор случайных чисел, генерящий число в заданном 8bit диапазоне.
выдающий разные числа даже при первом обращении
2 - процедура деления 16bit/8bit=16bit остаток не важен
Может у кого есть процедуры
1 - генератор случайных чисел, генерящий число в заданном 8bit диапазоне.
выдающий разные числа даже при первом обращении
2 - процедура деления 16bit/8bit=16bit остаток не важен
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
1. пользовал процу из какойто книженции. помойму "как написать игру на ассемблере", посмотри мож подойдет.
2: http://www.zxdn.narod.ru/coding/bd22divd.txt
Time to burn! You losers better learn -
No one controls our goddamn lifesl
Дельта-С 128
Amiga 600
Raspberry Pi Rev. B
По rnd здесь.
axor/Perspective
http://abzac.retropc.ru/
вот. выдрано из beta basic
Добавлено через 13 минутКод:rand_ ld d,0 ld bc,(rnd) ld h,c ld l,#fd ld a,b or a sbc hl,bc sbc a,d sbc hl,bc sbc a,d ld e,a sbc hl,de jr nc,r1 inc hl r1 ld (rnd),hl ret rnd dw 0
процедура деления по модулю вместе с процедурой вызова рандомайзера. на входе в А указываешь максимальное число диапазона в котором нужно получить рнд. на выходе рнд от нуля до макс..
Код:mod ld a,16 ld hl,0 m0 rl e rl d rl l rl h sbc hl,bc jr nc,m1 add hl,bc m1 ccf dec a jr nz,m0 ret rand push af call rand_ pop af ld c,a ld b,0 ex de,hl call mod ld a,l ret
Последний раз редактировалось jim; 24.07.2007 в 21:01. Причина: Добавлено сообщение
PHP код:
вот моя 16 бит
; rnd = seed*5+1
seed: LD HL,0
LD D,H
LD E,L
ADD HL,HL
ADD HL,HL
ADD HL,DE
INC HL
LD (SEED+1),HL ; hl = rnd
Alex Raider, Flash inc. 1992-1997 Новосибирск
Raider, старший байт какой-то не особо случайный получается. Таким образом если использовать её например для заполнения экрана то придётся в 2 раза больше раз её выполнять.
Всё-же ИМХО вариант из beta basic предпочтительнее (сам я использую что-то типа его.)
От туда очень понравился вариант
Просто элегантное решение.Код:RND LD A, (R1) LD D, A LD A, (R2) LD (R1), A ADD A, D LD D, A LD A, (R3) LD (R2), A ADD A, D RLCA LD (R3), A RET
Последний раз редактировалось Vladson; 16.01.2008 в 15:17.
Разрабатываю новый сетевой протокол
Variable Length Advanced Data Sending Over Network
Что он будет делать и зачем нужен не знаю, разработал пока только название.
смотря как ты заполняешь. просто байтом?
совершенно особая ситуация возникает если приходится ставить множество случайных точек на экран, генерации X, а затем Y. Вот там-то быстро можно увидеть, какой RND генератор "настоящий". Попробуйте, кстати для эксперимента. Увлекательнейшее дело.
генераторы основанные на принципе "сдвиг и xor" дают случайный бит. их используют для шума. но такие генераторы дают очень плохой случайный байт.
в линейном конгруэнтном датчике псевдо-случайной последовательности, что определяется формулой X[n+1] = (X[n] * A) mod B + C
наиболее "шумят" старшие биты. наименее - младшие.
* - это обычное умножение, A следует брать любым, но жел-но таким что остаток от денения его на 4 дает 1.
mod - операция взятия остатка от деления. (здесь получается B = 65536)
+ сложение. C следует брать любым, всегда нечетным
Добавлено через 4 минуты
а вот еще фокус для экспериментаторов с RND.
если взять как случайное число сумму случайных чисел, скажем 3-4 и более, то у данной последовательности изменяется мат.ожидание, меняется распределение.
оно меняется от uniform (чистый белый шум) например на triangular.
а такой шум звучит иначе.
для 1-битной пищалки можно попытаться складывать биты. тоже будет изменение тембра шума.
Последний раз редактировалось Raider; 29.09.2008 в 23:26. Причина: Добавлено сообщение
Alex Raider, Flash inc. 1992-1997 Новосибирск
вот эта процедура на 100% эмулирует рандом из ПЗУ
sub_random
push de,bc,af
ld de,0
seed equ $-2
xor a
ld h,a,l,a,b,a
add hl,de
adc a,b
dup 3
add hl,hl
adc a,a
edup
add hl,de
adc a,b
dup 2
add hl,hl
adc a,a
edup
add hl,de
adc a,b
add hl,hl
adc a,a
add hl,de
adc a,b
sub #4a
neg
ld c,a
add hl,bc
ld (seed),hl
pop af,bc,de
ret
С уважением,
Jerri / Red Triangle.
Последний раз редактировалось Vladson; 24.11.2008 в 01:48.
Разрабатываю новый сетевой протокол
Variable Length Advanced Data Sending Over Network
Что он будет делать и зачем нужен не знаю, разработал пока только название.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)