Важная информация

User Tag List

Показано с 1 по 6 из 6

Тема: RND

  1. #1
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию RND

    Дайте генератор RND без использования ПЗУ

    Такой конечно хороший, но не подходит
    rnd ld a,3
    ld c,a
    add a,a
    add a,a
    add a,c
    inc a
    ld (rnd+1),a
    Последний раз редактировалось GM BIT; 23.06.2010 в 03:42.

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Veteran
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    1,057
    Спасибо Благодарностей отдано 
    220
    Спасибо Благодарностей получено 
    47
    Поблагодарили
    31 сообщений
    Mentioned
    3 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот один из самых простых и быстрых методов:

    http://ru.wikipedia.org/wiki/%D0%9B%...82%D0%BE%D0%B4

  4. #3
    Veteran
    Регистрация
    08.01.2007
    Адрес
    г. Красноярск
    Сообщений
    1,262
    Спасибо Благодарностей отдано 
    264
    Спасибо Благодарностей получено 
    1,404
    Поблагодарили
    277 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Вот хороший генератор

    RND LD A,53
    ADD A,A
    JR NC,$+5
    LD C,51
    XOR C
    LD (RND+1),A

    Можно доработать, добавив строки:

    LD C,A
    LD A,R
    XOR C

  5. #4
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    я обычно такой использую:

    Код:
    rnd: ld a,42
         ld hl,rnd_tab
    
         dup rnd_tab_last - rnd_tab
         add a,(hl)
         ld (hl),a
         inc hl
         edup
    
         ld (rnd+1),a
         ret
    
    rnd_tab:
         db 'asdGK'
    rnd_tab_last:
    чем длиннее таблица, тем более случайные будут числа (но и тем медленней будет работать)
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  6. #5
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Собрал в кучку, общими усилиями

    RND_8 LD A,3
    LD C,A
    ADD A,A
    ADD A,A
    ADD A,C
    INC A
    LD (RND_8+1),A
    RET

    ;---------------------------------------------------------------

    RND_8 LD A,53
    ADD A,A
    JR NC,$+5
    LD C,51
    XOR C
    ; LD C,A
    ; LD A,R
    ; XOR C
    LD (RND_8+1),A
    RET

    ;---------------------------------------------------------------

    RND_8 LD A,42
    LD HL,RND_TAB
    DUP 5
    ADD A,(HL)
    LD (HL),A
    INC HL
    EDUP
    LD (RND_8+1),A
    RET
    RND_TAB DB 'as^GK'

    ;---------------------------------------------------------------

    RND_8 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
    R1 DEFB 200
    R2 DEFB 71
    R3 DEFB 153

    ;---------------------------------------------------------------

    RND_32 LD HL,0
    LD A,H
    AND #3F
    LD H,A
    LD D,(HL)
    INC HL
    LD E,(HL)
    INC HL
    LD A,(HL)
    XOR D
    XOR E
    SUB 16
    LD B,A
    LD A,D
    AND 3
    LD D,A
    LD E,B
    LD (RND_32+1),HL
    RET

    ;---------------------------------------------------------------

    RND_32 LD HL,#FFFF
    LD A,H
    ADD HL,HL
    XOR H
    ADD HL,HL
    ADD HL,HL
    ADD HL,HL
    XOR H
    ADD HL,HL
    ADD HL,HL
    XOR H
    ADD HL,HL
    ADD HL,HL
    LD L,A
    LD (RND_32+1),HL
    RET

    ;---------------------------------------------------------------

    RND_32 LD HL,0
    LD A,H
    ADD A,#77
    LD H,A
    RLC L
    ADD A,L
    LD L,A
    LD (RND_32+1),HL
    RET

    ;---------------------------------------------------------------

    RND_32 LD HL,#FFFF
    LD A,H
    OR L
    JR NZ,NOZERO
    INC L
    NOZERO LD A,L
    RLCA
    XOR H
    RLCA
    RLCA
    XOR H
    RLCA
    XOR H
    RLCA
    ADC HL,HL
    LD (RND_32+1),HL
    RET

    ;---------------------------------------------------------------

    RND_32 LD HL,0
    LD D,H
    LD E,L
    ADD HL,HL
    ADD HL,HL
    ADD HL,DE
    INC HL
    LD (RND_32+1),HL
    RET

    ;---------------------------------------------------------------

    Процедура ПЗУ

    RND_32 LD DE,0
    XOR A
    LD H,A
    LD L,A
    LD 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 (RND_32+1),HL
    RET

    ;---------------------------------------------------------------

  7. #6
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    ещё бы тесты, какое выдаёт более рандомное распределение (например, поставить 1000 точек по рандому на экране) и как по скорости (примерно, по бордру, вызвав функцию раз 100).
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •