eGospodarka.pl
eGospodarka.pl poleca

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

  • 21. Data: 2017-11-29 14:28:43
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: Stregor <s...@w...to.gmail.com>

    W dniu 2017-11-29 o 14:01, slawek pisze:
    > 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).
    >
    > 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.
    >
    > A książek nie będziesz czytać bo nie. Też zupełnie gites.

    Rozmawiasz z M.M. A "chce" Adam Klobukowski.

    --
    Pozdrawiam,
    Stregor


  • 22. Data: 2017-11-29 18:48:54
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "AK" <n...@n...net>

    Użytkownik "Adam Klobukowski" <a...@g...com> napisał:

    > Takie widzimisie.

    Troche glupie (no chyba, ze w celach poznawczych).
    Przynajmniej teoretycznie standardowy generator z C powinien byc
    bardziej losowy i "sprzetowy" niz pisany samodzielnie chocby i w ASM^2

    AK


  • 23. Data: 2017-11-29 19:12:13
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "AK" <n...@n...net>

    Użytkownik "slawek" <f...@f...com> napisał w wiadomości
    news:almarsoft.7787127689836467985@news.v.pl...
    > On Wed, 29 Nov 2017 01:20:36 +0100, "AK" <n...@n...net> wrote:
    >> PS: W "moich czasach" standard to byla ksiazka Zielinski
    > ""Generatory liczb pseudolosowych"
    >> czy jakos tak.
    >
    > Z rzeczy praktycznych Numerical Recipes mają rozdział o generatorach liczb
    losowych.

    Natomiast prastara ksiazka Zielinskiego o wiele lepiej tlumaczy teorię.

    AK


  • 24. Data: 2017-11-29 19:29:33
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "AK" <n...@n...net>

    Użytkownik "M.M." <m...@g...com> napisał:
    > Użytkownik "M.M." <m...@g...com> napisał:
    >
    >> A po cholere jakies sztuczki?

    > Bo chciałeś szybko a OGÓLNY algorytm modulo jest wolny. Algorytm dla
    > konkretnej wartości (np. modulo 45) czasami jest dużo szybszy - w sumie
    > myślałem, że to jest oczywiste dla Ciebie.

    Czasami czasami... Sprawdzales czy to ma _jakiekolwiek_ znaczenie ?

    >> Majac generator o rozkladzie jednostajnym (czyli <0, 1) ) przez
    >> proste skalowanie otrzymuje
    >> sie generator w potrzebnym przedziale.
    >Obawiam się, że generator zaimplementowany na liczbach zmiennoprzecinkowych
    > nie będzie szybki, a tu jeszcze jedno mnożenie na skalowanie...

    Przeciez to jest pokaznie ogolnej zasady.
    Nawet w standardowym C jest rand() dajacy integer.
    O specjalizowanych bibliotekach/algorytmach nawet nie wspomne (MT, SFMT).

    >> Generalnie na podstawie generatora jednostajnego droga
    >> obliczania odwrotnej dystrubuanty
    >> mozna otrzymac generator o innym rockladzie niz jednostajny.

    > To wszystko prawda, ale do czego pijesz?

    Do tego zeby _wpierw_ poznac choc "nieco" teorii a nie rzucac
    sie niepotrzebnie na napisanie najszybszego na swiecie generatora
    Moge sie zalozyc o wiele, ze ta wypasna "szybkosc" na cholere
    bedzie interlokutoprowi potrzebna.

    PS: Co do wolnego % nawt w fp to mozna bylo byc pewnym w "moich czasach"
    (brak/slaby/osobny komprocesor). Dzis to chyba wyglada zupelnie inaczej :)

    PS1: Od lat piszę na usenecie:
    Po czym poznac nieopierzonego programistę C?
    Po tym, ze zanim chocby jedna linijke napisze juz "optymalizuje"...

    AK


  • 25. Data: 2017-11-29 19:34:33
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "AK" <n...@n...net>

    No brawo! :) Nic dodac nic ujac (zwlaszcza tekturka:))

    AK

    Użytkownik "slawek" <f...@f...com> napisał w wiadomości
    news:almarsoft.8214239723429596713@news.v.pl...
    > On Wed, 29 Nov 2017 00:48:54 -0800 (PST), "M.M." <m...@g...com> wrote:
    >> liczb losowych, nie znajdziesz w tej książeczce specjalistycznego=
    >> , z
    >> podniesioną wydajnością np. kosztem jakości albo dzi?=
    >> ?ki implementacji wykorzystującej specyficzne cechy nowych procesorów.
    >
    >
    > Złe nastawienie.
    > Czytałeś? Czy tylko tak ci się wydaje? Jak nie czytałeś to przeczytaj - głupszy od
    tego nie
    > będziesz.
    >
    > Przeczytaj rozdział o generatorach w Numerical Recipes, obejrzyj sobie jak jest
    napisany generator
    > w jakiejś bibliotece Open Source, np. GSL czy Scipy, ew. CERNLIB. Dogłębnie poznaj
    czym jest
    > "Mersenne Twister".
    >
    > Ale przede wszystkim określ czym dla ciebie są liczby losowe. Poszukaj pakietu "Die
    hard" do
    > testowania liczb losowych. Wymyśl swój generator. Puść przez testy. Spróbuj
    uzasadnić
    > matematycznie że twój generator to akurat to co ci potrzebne.
    > Jeżeli twój hardware na to pozwala to dolutuj hardwareowy generator. Uwaga: odczyt
    z wiszącego
    > pinu NIE daje liczby losowej.
    >
    > Co do asemblera: zwykle program w C jest równie dobry jak asembler. Chyba że nie
    jest. Ale aby tak
    > było musisz znać asembler w stopniu przy którym nie ma znaczenia czy w asemblerze
    napiszesz 20
    > linijek czy 100.
    >
    > I najważniejsze: napisz sobie na tekturce odpowiedź na proste pytanie - DLACZEGO
    STANDARDOWY
    > GENERATOR LICZB LOSOWYCH JEST ABSOLUTNIE NIE DO PRZYJĘCIA?


  • 26. Data: 2017-11-29 19:38:45
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "AK" <n...@n...net>

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

    > Ale co czytałem i co mi się wydaje?

    Zielinskiego (bardziej teoria) i (tak jak Slawek b.dobrze radzil) Numerical Recipies
    (od teorii do
    czystej i uzytecznej praktyki).
    Czytales ?

    AK


  • 27. Data: 2017-11-29 20:29:37
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: slawek <f...@f...com>

    On Wed, 29 Nov 2017 18:48:54 +0100, "AK" <n...@n...net> wrote:
    > Przynajmniej teoretycznie standardowy generator z C powinien byc
    > bardziej losowy i "sprzetowy" niz pisany samodzielnie chocby i w
    ASM^2


    Ciekawe jest zrobienie /złego/ generatora. Tzn. takiego który daje
    trudne, ale możliwe, do przewidzenia liczby. To tak jak z programem
    szachowym: jak będzie za dobrze grał, to nie będzie po co z nim grać.


  • 28. Data: 2017-11-29 20:34:28
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "AK" <n...@n...net>

    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


  • 29. Data: 2017-11-29 20:38:18
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "AK" <n...@n...net>

    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...
    :(

    AK


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

    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

strony : 1 . 2 . [ 3 ] . 4 ... 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: