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

User Tag List

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

Тема: RND

  1. #1
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Благодарностей: 230
    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 в 01:42.

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

  3. #2
    Master
    Регистрация
    08.05.2007
    Адрес
    Dnepropetrovsk
    Сообщений
    883
    Благодарностей: 471
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

  4. #3
    Master
    Регистрация
    08.01.2007
    Адрес
    Красноярск
    Сообщений
    736
    Благодарностей: 1861
    Mentioned
    0 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. Этот пользователь поблагодарил tiboh за это полезное сообщение:
    GM BIT (24.06.2010)

  6. #4
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,270
    Благодарностей: 190
    Mentioned
    0 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 1, 2]
    KAY-1024, 5''FDD, 3''FDD, HDD

  7. Этот пользователь поблагодарил Sinus за это полезное сообщение:
    GM BIT (24.06.2010)

  8. #5
    Master Аватар для GM BIT
    Регистрация
    27.11.2008
    Адрес
    Красноярск
    Сообщений
    747
    Благодарностей: 230
    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

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

  9. #6
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,270
    Благодарностей: 190
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

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

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

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

Ваши права

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