Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #30974

Re: Prosty generator pseudolosowy 8bit z limitem

Newsgroups pl.comp.programming
Date 2017-11-29 20:42 -0800
References <aef027f7-2063-41a0-9f50-2136a3fd1032@googlegroups.com>
Message-ID <f06eef58-9aed-49a3-8cc2-660dcf0a4c53@googlegroups.com> (permalink)
Subject Re: Prosty generator pseudolosowy 8bit z limitem
From bartekltg <bartekltg@gmail.com>

Show all headers | View raw


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
 

Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

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

csiph-web