eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingProsty generator pseudolosowy 8bit z limitem
Ilość wypowiedzi w tym wątku: 51

  • 31. Data: 2017-11-30 05:43:38
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: bartekltg <b...@g...com>

    On Wednesday, November 29, 2017 at 8:38:38 PM UTC+1, AK wrote:
    > Użytkownik "slawek" <f...@f...com> napisał:
    >
    > > Ciekawe jest zrobienie /złego/ generatora. Tzn. takiego który daje trudne, ale
    możliwe, do
    > > przewidzenia liczby.
    >
    > Dobrze wiesz ze zdecydowana wiekszosc "domorośle" robionych generatorow "losowych"
    ma ta ceche :)
    > Najgorsze jest, ze bardzo czesto zdarzalo sie, ze te z bibliotek standardowych
    kompilatorow tez...
    > :(

    RANDU ;-)

    pzdr
    bartekltg


  • 32. Data: 2017-11-30 07:31:39
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "Radoslaw Szwed" <r...@p...fm>


    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)




  • 33. Data: 2017-11-30 13:57:24
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "M.M." <m...@g...com>

    On Wednesday, November 29, 2017 at 8:34:47 PM UTC+1, AK wrote:
    > Użytkownik "Adam Klobukowski" <a...@g...com> napisał:
    > >> std::random_device device;
    > >> std::mt19937 egine{device()};
    > >> std::uniform_int_distribution<> dist(0, 44);
    > >>
    > >> std::cout << dist(engine) << '\n';
    > >>
    > >> Jest to C++11 i gwarantuje rozkład normalny otrzymywanych liczb...
    >
    > > Dzięki, ale ja nie chcę C, C++, ani C++11.
    >
    > Dostales (prawie)najlepsze (std::mt19937) z mozliwych istniejacych rozwiazan i
    marudzisz eh...
    >
    > AK

    Jeśli wydajność generatora nie jest ważna, a są potrzebne dobre losowe
    liczby, to bym nigdy nie użył MT. MT jest czymś pośrednim pomiędzy
    dobrym a wydajnym generatorem. MT nie przechodzi diehardera.

    Pozdrawiam




  • 34. Data: 2017-12-01 01:05:18
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "AK" <n...@n...net>

    Użytkownik "M.M." <m...@g...com> napisał:

    >> Dostales (prawie)najlepsze (std::mt19937) z mozliwych istniejacych rozwiazan i
    marudzisz eh...
    >>
    >> AK

    > Jeśli wydajność generatora nie jest ważna, a są potrzebne dobre losowe liczby, to
    bym nigdy nie
    > użył MT.
    > MT jest czymś pośrednim pomiędzy dobrym a wydajnym generatorem.

    No i _wlasnie dlatego_ jest najlepszy w kontekscie problemu pytacza.
    Zacznie robic sam , to bedzie super szybkie ale.. do d.. (maly okres).
    Zechce zrobic porzadnie, to szybkosc szlag trafi.

    AK


  • 35. Data: 2017-12-01 07:01:52
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: Adam Klobukowski <a...@g...com>

    W dniu środa, 29 listopada 2017 14:01:44 UTC+1 użytkownik slawek napisał:
    > On Wed, 29 Nov 2017 02:23:29 -0800 (PST), "M.M." <m...@g...com>
    > wrote:
    > > Ale czyje? Moje nastawienie? A jakie masz wyobrażenie o moim
    > > nastawieniu, poprawnie zdekodowałeś moje nastawienie?
    >
    > Domagasz się pomocy, a nawet nie zdefiniowałeś dokładnie problemu.
    > Chcesz pisać w Asemblerze, ale nie chcesz się przepracować. Chcesz
    > pomocy, ale nie piszesz o jaki CPU chodzi (tyle że to nie x86).

    Heh. Mnie chodzi o najprostszy generatow liczb pseudolosowych. Nie będe go nijak
    testował (poza 'na oko') bo nie będzie na nim wisieć los wszechświata, kluczy
    szyfrujących też nie będę nim generował. Po prostu potrzebuję czegoś co pozwoli łatwo
    i w miare szybko wygenerowć ca. 1M liczb z odpowiednich zakresów.

    > Chcesz pisać swój własny generator. Ale nie masz narzędzi do jego
    > testowania. Chcesz szybko i byle jak, ale nie masz pojęcia jak i jak
    > zacząć. No i fajnie.

    Tak, chcę szybko i byle jak. Jak już napisałem wyżej - nie piszę nic krytycznego.

    > A książek nie będziesz czytać bo nie. Też zupełnie gites.

    Nic takiego nigdzie nie napisałem.

    AdamK


  • 36. Data: 2017-12-01 07:04:14
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: Adam Klobukowski <a...@g...com>

    W dniu czwartek, 30 listopada 2017 05:42:24 UTC+1 użytkownik bartekltg napisał:
    > On Tuesday, November 28, 2017 at 9:48:28 AM UTC+1, Adam Klobukowski wrote:
    > > 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ć?
    >
    > Dalej piszesz, że chcesz zmieniać w trakcie, to jedynym rozwiązaniem jest
    > generator o zakresie pełnych 8 bitów i obcinanie-odrzucanie*) w lepszej
    > werjsi, a modulo jak checsz mieć liczby ujowe.
    >
    > *) masz M liczb losowych, a chesz N, bierzesz największe k, takie, że
    > N*k<M. Losujesz x, jeśli x/k <N x/k jest wynikiem, jeśli nie - repeta.
    >
    > No to czym generować te 8 bitów? Weź najprostszy generator kongruencyjny
    > i bierz 8 bitów w miarę z góry.
    > Co bardzije znane generatorki:
    > (x * 48271) % 2147483647
    > (x * 16807) % 2147483647
    >
    > Modulo 2^31-1. Ciut upierdliwe.
    > Tu możesz sobie znaleść takie, które są mod 2^k (poza RANDU!)
    > https://en.wikipedia.org/wiki/Linear_congruential_ge
    nerator#Parameters_in_common_use
    >
    > Dlaczego taki duży stan, mimo, że chcesz tylko 8 bitów?
    > Bo jeśli stan miałby tylko 8 bitów, generatorek miałby
    > okres co nauwyżej 256. Dla 16 bitów co najwyżęj 65536. Mało.
    > Poza i tak rzadko więcej niż połowa bitów takiej liczby zachowuje
    > się ładnie.
    >
    > Ładną alternatywą jest też xorshift*.
    >
    >
    > BTW. Coś mi mówi, że zadałeś nie to pytanie, które chciałeś.
    > Czy przypadkiem nie istotniejsze jest to, że ma to szybko
    > banglać na 8 lub 16 bitowym urządzeniu? ;->
    > Wtedy to zupełnie inny problem.
    >
    > pzdr
    > bartekltg

    O, dzieki, o coś takiego mi chodziło :D

    AdamK


  • 37. Data: 2017-12-01 07:04:40
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: Adam Klobukowski <a...@g...com>

    W dniu czwartek, 30 listopada 2017 07:32:20 UTC+1 użytkownik Radoslaw Szwed napisał:
    > 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)

    Dzięki :)

    AdamK


  • 38. Data: 2017-12-02 02:46:51
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: slawek <f...@f...com>

    On Thu, 30 Nov 2017 22:01:52 -0800 (PST), Adam Klobukowski
    <a...@g...com> wrote:
    > Nic takiego nigdzie nie napisałem.

    A konkretnie: jakie książki przeczytałeś?


  • 39. Data: 2017-12-04 17:34:54
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: Adam Klobukowski <a...@g...com>

    W dniu sobota, 2 grudnia 2017 02:46:52 UTC+1 użytkownik slawek napisał:
    > On Thu, 30 Nov 2017 22:01:52 -0800 (PST), Adam Klobukowski
    > <a...@g...com> wrote:
    > > Nic takiego nigdzie nie napisałem.
    >
    > A konkretnie: jakie książki przeczytałeś?

    Ostatnio? 'Viriona' Ziemańskiego. Ale już następne się piętrzą przedemną.

    AdamK


  • 40. Data: 2017-12-06 09:58:36
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: slawek <f...@f...com>

    On Mon, 4 Dec 2017 08:34:54 -0800 (PST), Adam Klobukowski
    <a...@g...com> wrote:
    > Ostatnio? 'Viriona' Ziemańskiego.

    A co w niej piszą o generatorach liczb pseudolosowych?

strony : 1 ... 3 . [ 4 ] . 5 . 6


Szukaj w grupach

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: