Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > pl.comp.programming > #30911 > unrolled thread
| Started by | Adam Klobukowski <adamklobukowski@gmail.com> |
|---|---|
| First post | 2017-11-28 00:48 -0800 |
| Last post | 2017-11-30 22:04 -0800 |
| Articles | 11 on this page of 51 — 10 participants |
Back to article view | Back to pl.comp.programming
Prosty generator pseudolosowy 8bit z limitem Adam Klobukowski <adamklobukowski@gmail.com> - 2017-11-28 00:48 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-11-28 05:13 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-11-28 05:17 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-11-29 01:20 +0100
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-11-29 09:41 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-11-29 19:12 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-11-29 00:48 -0800
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-11-29 10:19 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-11-29 02:23 -0800
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-11-29 14:01 +0100
Re: Prosty generator pseudolosowy 8bit z limitem Stregor <stregor@wytnij.to.gmail.com> - 2017-11-29 14:28 +0100
Re: Prosty generator pseudolosowy 8bit z limitem Adam Klobukowski <adamklobukowski@gmail.com> - 2017-11-30 22:01 -0800
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-12-02 02:46 +0100
Re: Prosty generator pseudolosowy 8bit z limitem Adam Klobukowski <adamklobukowski@gmail.com> - 2017-12-04 08:34 -0800
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-12-06 09:58 +0100
Re: Prosty generator pseudolosowy 8bit z limitem Roman Tyczka <noemail@because.no> - 2017-12-06 20:14 +0100
Re: Prosty generator pseudolosowy 8bit z limitem fir <profesor.fir@gmail.com> - 2017-12-06 01:40 -0800
Re: Prosty generator pseudolosowy 8bit z limitem fir <profesor.fir@gmail.com> - 2017-12-06 09:22 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-12-06 20:07 +0100
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-12-06 21:27 +0100
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-12-06 21:30 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-12-07 01:09 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-12-06 18:54 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-12-06 20:15 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-12-08 08:53 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-12-09 07:27 -0800
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-11-29 14:04 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-11-29 19:38 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-11-29 19:34 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-11-29 19:29 +0100
Re: Prosty generator pseudolosowy 8bit z limitem szykcech@gmail.com - 2017-11-28 05:50 -0800
Re: Prosty generator pseudolosowy 8bit z limitem szykcech@gmail.com - 2017-11-28 06:09 -0800
Re: Prosty generator pseudolosowy 8bit z limitem Adam Klobukowski <adamklobukowski@gmail.com> - 2017-11-28 08:39 -0800
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-11-28 20:13 +0100
Re: Prosty generator pseudolosowy 8bit z limitem Adam Klobukowski <adamklobukowski@gmail.com> - 2017-11-28 21:59 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "Radoslaw Szwed" <radekszwed@pochta.fm> - 2017-11-29 07:55 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-11-29 18:48 +0100
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-11-29 20:29 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-11-29 20:38 +0100
Re: Prosty generator pseudolosowy 8bit z limitem bartekltg <bartekltg@gmail.com> - 2017-11-29 20:43 -0800
Re: Prosty generator pseudolosowy 8bit z limitem szykcech@gmail.com - 2017-11-28 19:53 -0800
Re: Prosty generator pseudolosowy 8bit z limitem Adam Klobukowski <adamklobukowski@gmail.com> - 2017-11-28 22:00 -0800
Re: Prosty generator pseudolosowy 8bit z limitem slawek <fake@fakeemail.com> - 2017-11-29 09:44 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-11-29 20:34 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-11-30 04:57 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "AK" <nobody@nowhere.net> - 2017-12-01 01:05 +0100
Re: Prosty generator pseudolosowy 8bit z limitem "M.M." <mmarszik@gmail.com> - 2017-11-29 00:41 -0800
Re: Prosty generator pseudolosowy 8bit z limitem bartekltg <bartekltg@gmail.com> - 2017-11-29 20:42 -0800
Re: Prosty generator pseudolosowy 8bit z limitem Adam Klobukowski <adamklobukowski@gmail.com> - 2017-11-30 22:04 -0800
Re: Prosty generator pseudolosowy 8bit z limitem "Radoslaw Szwed" <radekszwed@pochta.fm> - 2017-11-30 07:31 +0100
Re: Prosty generator pseudolosowy 8bit z limitem Adam Klobukowski <adamklobukowski@gmail.com> - 2017-11-30 22:04 -0800
Page 3 of 3 — ← Prev page 1 2 [3]
| From | szykcech@gmail.com |
|---|---|
| Date | 2017-11-28 19:53 -0800 |
| Message-ID | <1693072b-c374-412a-abf3-987e07ca6a3b@googlegroups.com> |
| In reply to | #30926 |
> 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ą...
[toc] | [prev] | [next] | [standalone]
| From | Adam Klobukowski <adamklobukowski@gmail.com> |
|---|---|
| Date | 2017-11-28 22:00 -0800 |
| Message-ID | <65175929-983e-4586-a430-77a0d65e5f30@googlegroups.com> |
| In reply to | #30935 |
W dniu środa, 29 listopada 2017 04:53:41 UTC+1 użytkownik szyk...@gmail.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
[toc] | [prev] | [next] | [standalone]
| From | slawek <fake@fakeemail.com> |
|---|---|
| Date | 2017-11-29 09:44 +0100 |
| Message-ID | <almarsoft.3088796336669003341@news.v.pl> |
| In reply to | #30935 |
On Tue, 28 Nov 2017 19:53:39 -0800 (PST), szykcech@gmail.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.
[toc] | [prev] | [next] | [standalone]
| From | "AK" <nobody@nowhere.net> |
|---|---|
| Date | 2017-11-29 20:34 +0100 |
| Message-ID | <ovn24m$4ch$1@node1.news.atman.pl> |
| In reply to | #30926 |
Użytkownik "Adam Klobukowski" <adamklobukowski@gmail.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
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2017-11-30 04:57 -0800 |
| Message-ID | <aaf4751f-8e07-4d3e-8a3c-d398b36265dc@googlegroups.com> |
| In reply to | #30967 |
On Wednesday, November 29, 2017 at 8:34:47 PM UTC+1, AK wrote:
> Użytkownik "Adam Klobukowski" <adamklobukowski@gmail.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
[toc] | [prev] | [next] | [standalone]
| From | "AK" <nobody@nowhere.net> |
|---|---|
| Date | 2017-12-01 01:05 +0100 |
| Message-ID | <ovq6ct$utt$1@gioia.aioe.org> |
| In reply to | #30977 |
Użytkownik "M.M." <mmarszik@gmail.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
[toc] | [prev] | [next] | [standalone]
| From | "M.M." <mmarszik@gmail.com> |
|---|---|
| Date | 2017-11-29 00:41 -0800 |
| Message-ID | <5becdcf4-9a3d-41f6-8843-0c1def8c7ae6@googlegroups.com> |
| In reply to | #30915 |
On Tuesday, November 28, 2017 at 2:50:58 PM UTC+1, szyk...@gmail.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.
[toc] | [prev] | [next] | [standalone]
| From | bartekltg <bartekltg@gmail.com> |
|---|---|
| Date | 2017-11-29 20:42 -0800 |
| Message-ID | <f06eef58-9aed-49a3-8cc2-660dcf0a4c53@googlegroups.com> |
| In reply to | #30911 |
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_generator#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
[toc] | [prev] | [next] | [standalone]
| From | Adam Klobukowski <adamklobukowski@gmail.com> |
|---|---|
| Date | 2017-11-30 22:04 -0800 |
| Message-ID | <131e55f7-45ca-4980-ac3d-4318f94fd1db@googlegroups.com> |
| In reply to | #30974 |
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_generator#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
[toc] | [prev] | [next] | [standalone]
| From | "Radoslaw Szwed" <radekszwed@pochta.fm> |
|---|---|
| Date | 2017-11-30 07:31 +0100 |
| Message-ID | <ovo8li$1sp$1@gioia.aioe.org> |
| In reply to | #30911 |
Użytkownik "Adam Klobukowski" <adamklobukowski@gmail.com> napisał w wiadomości
news:aef027f7-2063-41a0-9f50-2136a3fd1032@googlegroups.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)
[toc] | [prev] | [next] | [standalone]
| From | Adam Klobukowski <adamklobukowski@gmail.com> |
|---|---|
| Date | 2017-11-30 22:04 -0800 |
| Message-ID | <b7adb6bb-96b3-457a-bc00-ddbe1174dc18@googlegroups.com> |
| In reply to | #30976 |
W dniu czwartek, 30 listopada 2017 07:32:20 UTC+1 użytkownik Radoslaw Szwed napisał: > Użytkownik "Adam Klobukowski" <adamklobukowski@gmail.com> napisał w wiadomości > news:aef027f7-2063-41a0-9f50-2136a3fd1032@googlegroups.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
[toc] | [prev] | [standalone]
Page 3 of 3 — ← Prev page 1 2 [3]
Back to top | Article view | pl.comp.programming
csiph-web