eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingProsty generator pseudolosowy 8bit z limitem › Re: Prosty generator pseudolosowy 8bit z limitem
  • Data: 2017-11-30 07:31:39
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "Radoslaw Szwed" <r...@p...fm> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]


    Użytkownik "Adam Klobukowski" <a...@g...com> napisał w wiadomości
    news:aef027f7-2063-41a0-9f50-2136a3fd1032@googlegrou
    ps.com...
    Poszukuję prostego (szybkiego) generatora pseudolosowego liczb 8bitowych z górnym
    limitem, tj. jak bym chciał sobie wylosować liczbę
    z zakresu 0-44. Możecie coś polecić?

    Mały (16 bajtów na x86) szybki generator liczb pseudolosowych generujący wartości
    losowe od 0-255.
    Wprowadzenie limitu chyba nie będzie problemem dlatego go nie uwzględniłem.

    Generowane liczby zależą od wartości początkowej rnd i wartości używanej przy
    rozkazie xor. Dla poniższych ustawień kod generuje 254 różne wartości.
    Żadna z wartości się nie powtórzy dopóki wszystkie nie zostaną wygenerowane.
    Można zamiast $e7 użyć $71, $7f, $e9 dają równie dobre rezultaty.

    Przeniesienie poniższego kodu na Motorolę (Amiga/Atari ST),
    MOS 6502 (Atari 8bit/C64) czy "ARMa" nie powinno stanowić kłopotu.
    W przypadku problemów dołączyłem komentarze.

    rnd db 20 ; wartość początkowa

    mov al, rnd ; załadowanie zmiennej do akumulatora
    sal al, 1 ; przesuniecie bitów w akumulatorze o 1 w lewo najstarszy bit
    wpada do c
    jc pomin ; jeżeli c=1 skocz do pomin
    xor al, $e7 ; suma symetryczna
    pomin:
    mov rnd, al ; akumulator do rnd (wartość pseudolosowa)



Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: