eGospodarka.pl
eGospodarka.pl poleca

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

  • 11. Data: 2017-11-29 07:00:27
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: Adam Klobukowski <a...@g...com>

    W dniu środa, 29 listopada 2017 04:53:41 UTC+1 użytkownik s...@g...com napisał:
    > > Musi to być w miarę proste i szybkie (implementacja bedzie w asemblerze).
    >
    > Skoro jesteśmy już przy Asemblerze, to może... użyj sprzętowego generatora
    > liczb pseudolosowych. Intel kiedyś (jakieś 15+ lat temu) się chwalił, że
    > używa szumu termicznego i nasłuchiwania na magistral (nie wiem jakich) i z
    > tego dostaje się wartości które są super przypadkowe. Myślę, że do dzisiaj
    > AMD też opanowało tą technologię, tak, że nie jest to rozwiązanie jedynie
    > intelowskie. Myślę, że jest to jakieś urządzenie pod jakimś adresem pamięci,
    > tak, że wystarczy to odczytać 1 instrukcją i już masz dobrą wartość
    > pseudolosową...

    Nic nie pisałem że w asemblerze x86. Więc napiszę: nie w asemblerze x86.

    AdamK


  • 12. Data: 2017-11-29 07:55:20
    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:b7e9c7d1-798a-4a0b-8167-a214ebcce75d@googlegrou
    ps.com...
    > > > Liczb bede generowal ok. 1000000. Zakres 0-44 jest podany tylko
    > > przykladowo=
    > > > i podczas generacji kolejnych bedzie się zmieniał. Musi to by?=
    > > > ? w miarę proste i szybkie (implementacja bedzie w asemblerze).
    > >
    > >
    > > Primo, dlaczego w Asemblerze? Secundo, tego rodzaju kawałki ogólnie
    > > są proste, nie ma różnicy czy będzie trochę więcej jakichś add czy
    > > mul
    >
    > Takie widzimisie.

    Poniżej generator pseudolosowy oparty na algorytmie Parka-Millera
    Gdyby procedura była za wolna użyj koprocesora.

    proc Losowe
    ; Generator pseudolosowy Park-Miller [0..eax-1]
    ; Wejście :eax
    ; Wyjście :eax

    mov ebx, eax
    mov eax, [ziarno]
    xor edx, edx
    mov ecx, 127773
    div ecx
    mov ecx, eax
    mov eax, 16807
    mul edx
    mov edx, ecx
    mov ecx, eax
    mov eax, 2836
    mul edx
    sub ecx, eax
    xor edx, edx
    mov eax, ecx
    mov [ziarno], ecx
    div ebx
    mov eax, edx
    ret
    endp

    ziarno dd 2037280626


  • 13. Data: 2017-11-29 09:41:25
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "M.M." <m...@g...com>

    On Tuesday, November 28, 2017 at 2:50:58 PM UTC+1, s...@g...com wrote:
    > W dniu wtorek, 28 listopada 2017 09:48:28 UTC+1 użytkownik Adam Klobukowski
    napisał:
    > > 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ć?
    >
    > Możecie! A czy Wy czytacie jedyną gazetę programistyczną w Polsze?!?
    > Rozwiązanie jest na stronie 21 nr 9/2017:
    >
    > #include <random>
    > #include <iostream>
    > [...]
    >
    > 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...

    Jeśli ktoś pyta o szybki generator liczb losowych, to rozumiem, że
    bardzo dobrze zna mt i szuka czegoś szybszego, być może kosztem
    jakości generowanych liczb. Ale jeśli szybkość mt wystarcza... to
    pewnie, należy użyć mt.



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

    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.


  • 15. Data: 2017-11-29 09:44:49
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: slawek <f...@f...com>

    On Tue, 28 Nov 2017 19:53:39 -0800 (PST), s...@g...com wrote:
    > Skoro jesteśmy już przy Asemblerze, to może... użyj spr=
    > zętowego generatora liczb pseudolosowych. Intel kiedyś (jakie?=
    > ? 15+ lat temu) się chwalił, że używa szumu termiczne=
    > go i nasłuchiwania na magistral (nie wiem jakich) i z tego dostaje
    si=
    > ę wartości które są super przypadkowe. Myślę,=


    Syf w tym że to nie działało na sprzęcie kupowanym poza USA.

    Dziś można kupić "pendrive" z takim generatorem lub zrobić sobie
    samemu na MCU.


  • 16. Data: 2017-11-29 09:48:54
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "M.M." <m...@g...com>

    On Wednesday, November 29, 2017 at 1:21:03 AM UTC+1, AK wrote:
    > Użytkownik "M.M." <m...@g...com> napisał:
    >
    > > Za punkt wyjścia bym wziął liniowy lub fibonacciego, potem bym szukał
    > > czy jest jakaś sztuczka na modulo 45... a może kompilator zna odpowiednią
    > > sztuczkę?
    >
    > 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.



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


    > Generalnie na podstawie generatora jednostajnego droga
    > obliczania odwrotnej dystrubuanty
    > mozna otrzymac generator o innym rockladzie niz jednostajny.
    To wszystko prawda, ale do czego pijesz?



    > PS: W "moich czasach" standard to byla ksiazka Zielinski ""Generatory
    > liczb pseudolosowych"
    > czy jakos tak.
    No tak, ale znowu pytanie, co z tego? Tam są ogólne i znane generatory
    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.

    Pozdrawiam


  • 17. Data: 2017-11-29 10:19:08
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: slawek <f...@f...com>

    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?


  • 18. Data: 2017-11-29 11:23:29
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: "M.M." <m...@g...com>

    On Wednesday, November 29, 2017 at 10:19:11 AM UTC+1, slawek wrote:
    > 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.
    Ale czyje? Moje nastawienie? A jakie masz wyobrażenie o moim
    nastawieniu, poprawnie zdekodowałeś moje nastawienie?


    > Czytałeś? Czy tylko tak ci się wydaje? Jak nie czytałeś to przeczytaj
    > - głupszy od tego nie będziesz.
    Ale co czytałem i co mi się wydaje? A głupszy może będę od tego, bo
    czas nie jest z gumy i nie będę mógł w tym czasie robić czegoś innego.



    > 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".
    Dlaczego mam to czytać i dogłębniej poznawać?



    > Ale przede wszystkim określ czym dla ciebie są liczby losowe.
    Chyba zwracasz się do osoby zakładającej wątek :)



    > 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.
    Kiedyś to robiłem, testowałem różne odmiany generatorów fibonacciego.
    Moje wnioski są takie: generatory fibonacciego są dużo szybsze od
    ranluxa, i (dobrze sparametryzowane) zazwyczaj przechodzą testy tak
    samo dobrze ranlux, chociaż g. f. mogą wymagać dłuższej inicjalizacji i
    większej ilości pamięci. Tyle że ta rozmowa chyba była o czymś
    całkiem innym. Chcesz zmienić temat na generatory fibonnaciego?
    Chętnie poczytam taki wątek, a może i coś napiszę.


    > Jeżeli twój hardware na to pozwala to dolutuj hardwareowy generator.
    > Uwaga: odczyt z wiszącego pinu NIE daje liczby losowej.
    To już totalnie odlecieliśmy, moim zdaniem daje liczbę losową, ale
    rozkład jest baaaardzo nierównomierny.



    > Co do asemblera: zwykle program w C jest równie dobry jak asembler.
    Ja też mówię że zwykły C jest równie dobry jak asm, o ile w C można
    optymalnie wykorzystać specyficzne cechy sprzętu.


    > 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.
    No pewnie.



    > I najważniejsze: napisz sobie na tekturce odpowiedź na proste pytanie
    > - DLACZEGO STANDARDOWY GENERATOR LICZB LOSOWYCH JEST ABSOLUTNIE NIE
    > DO PRZYJĘCIA?
    Ja zrozumiałem tak: ponieważ działa za wolno i być może za dobrze.
    Mnie w 99% zastosowań wystarcza generator liniowy lub mersen lub
    ranlux lub fibonnaci.

    Pozdrawiam


  • 19. Data: 2017-11-29 14:01:41
    Temat: Re: Prosty generator pseudolosowy 8bit z limitem
    Od: slawek <f...@f...com>

    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.


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

    On Wed, 29 Nov 2017 02:23:29 -0800 (PST), "M.M." <m...@g...com>
    wrote:
    > To już totalnie odlecieliśmy, moim zdaniem daje liczbę losow=
    > ą, ale
    > rozkład jest baaaardzo nierównomierny.


    Twoje zdanie, twoja sprawa. Ale... są konkretne wyniki, ludzie
    napisali i opublikowali.

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