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


Groups > pl.comp.programming > #30911 > unrolled thread

Prosty generator pseudolosowy 8bit z limitem

Started byAdam Klobukowski <adamklobukowski@gmail.com>
First post2017-11-28 00:48 -0800
Last post2017-11-30 22:04 -0800
Articles 20 on this page of 51 — 10 participants

Back to article view | Back to pl.comp.programming


Contents

  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 2 of 3 — ← Prev page 1 [2] 3  Next page →


#31030

Fromslawek <fake@fakeemail.com>
Date2017-12-06 21:30 +0100
Message-ID<almarsoft.1125366514039150207@news.v.pl>
In reply to#31024
On Wed, 6 Dec 2017 20:07:24 +0100, "AK" <nobody@nowhere.net> wrote:
> rand() & 0xFF  // ;)

Lepiej (rand() >> 4) & 0xff

Najniższe bity wywalić.

[toc] | [prev] | [next] | [standalone]


#31034

From"AK" <nobody@nowhere.net>
Date2017-12-07 01:09 +0100
Message-ID<p0a0td$1lis$1@gioia.aioe.org>
In reply to#31030
Użytkownik "slawek" <fake@fakeemail.com> napisał:
>> rand() & 0xFF  // ;)
>
> Lepiej (rand() >> 4) & 0xff
>
> Najniższe bity wywalić.

To prawda, ale oni chcieli "szybciej", a nie "lepiej" :)
PS: Oczywiscie generalnie to byl zart (no nie tak znow w 100%:)

AK 

[toc] | [prev] | [next] | [standalone]


#31035

From"M.M." <mmarszik@gmail.com>
Date2017-12-06 18:54 -0800
Message-ID<5d065c65-af76-4b5a-8ee2-6df4c7d37640@googlegroups.com>
In reply to#31034
On Thursday, December 7, 2017 at 1:10:25 AM UTC+1, AK wrote:
> Użytkownik "slawek" <fake@fakeemail.com> napisał:
> >> rand() & 0xFF  // ;)
> >
> > Lepiej (rand() >> 4) & 0xff
> >
> > Najniższe bity wywalić.
> 
> To prawda, ale oni chcieli "szybciej", a nie "lepiej" :)
> PS: Oczywiscie generalnie to byl zart (no nie tak znow w 100%:)

W Wieczorkowskim jest podanych kilka parametrów dla generatorów 
Fibonacciego. Sprawdzałem, działają bardzo szybko i przechodzą dużo
testów. Zazwyczaj są znacznie lepsze niż generator liniowy, a
nawet MT. Jeśli to nie był żart, to napiszcie, czemu nie użyć
Fibonacciego? 

Pozdrawiam

Pozdrawiam

[toc] | [prev] | [next] | [standalone]


#31036

From"M.M." <mmarszik@gmail.com>
Date2017-12-06 20:15 -0800
Message-ID<de1df326-e16f-41d7-b28a-fae1c5baf513@googlegroups.com>
In reply to#31034
On Thursday, December 7, 2017 at 1:10:25 AM UTC+1, AK wrote:
> Użytkownik "slawek" <fake@fakeemail.com> napisał:
> >> rand() & 0xFF  // ;)
> >
> > Lepiej (rand() >> 4) & 0xff
> >
> > Najniższe bity wywalić.
> 
> To prawda, ale oni chcieli "szybciej", a nie "lepiej" :)
> PS: Oczywiscie generalnie to byl zart (no nie tak znow w 100%:)
> 
> AK


Zwykły liniowy też może nieźle przechodzić diehardera, ale ma 
operację modulo na uint64, więc nie działa super szybko:

#include <cstdio>
#include <cstdlib>

#define N (1000)

unsigned int frand() {
    static unsigned long long x = 3456;
    return x = ( 67867967ull * x + 373587883ull ) % 22801763489ull;
}

int main(int argc, char *argv[]) {
    while( true ) {
        unsigned char x[N];
        for( int i=0 ; i<N ; i++ ) {
            x[i] = (unsigned char)( ( frand() >> 12 ) & 0xff );
        }
        fwrite( x , 1 , N , stdout );
    }
    return 0;
}


time ./frnd  | dieharder -a -m 1 -g 200    
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  2.08e+07  |2780121314|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|     100|0.46063422|  PASSED  
      diehard_operm5|   0|   1000000|     100|0.31333531|  PASSED  
  diehard_rank_32x32|   0|     40000|     100|0.93698626|  PASSED  
    diehard_rank_6x8|   0|    100000|     100|0.91729484|  PASSED  
   diehard_bitstream|   0|   2097152|     100|0.88623878|  PASSED  
        diehard_opso|   0|   2097152|     100|0.04569037|  PASSED  
        diehard_oqso|   0|   2097152|     100|0.67464303|  PASSED  
         diehard_dna|   0|   2097152|     100|0.11851483|  PASSED  
diehard_count_1s_str|   0|    256000|     100|0.99351326|  PASSED  
diehard_count_1s_byt|   0|    256000|     100|0.27087944|  PASSED  
 diehard_parking_lot|   0|     12000|     100|0.48712953|  PASSED  
    diehard_2dsphere|   2|      8000|     100|0.71869890|  PASSED  
    diehard_3dsphere|   3|      4000|     100|0.06056982|  PASSED  
     diehard_squeeze|   0|    100000|     100|0.12027489|  PASSED  
        diehard_sums|   0|       100|     100|0.03918554|  PASSED  
        diehard_runs|   0|    100000|     100|0.79798093|  PASSED  
        diehard_runs|   0|    100000|     100|0.70611138|  PASSED  
       diehard_craps|   0|    200000|     100|0.72556415|  PASSED  
       diehard_craps|   0|    200000|     100|0.91109206|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.10109988|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|     100|0.39278261|  PASSED  
         sts_monobit|   1|    100000|     100|0.99866272|   WEAK   
            sts_runs|   2|    100000|     100|0.52353357|  PASSED  
          sts_serial|   1|    100000|     100|0.49463645|  PASSED  
          sts_serial|   2|    100000|     100|0.23074460|  PASSED  
          sts_serial|   3|    100000|     100|0.53546328|  PASSED  
          sts_serial|   3|    100000|     100|0.86112117|  PASSED  
          sts_serial|   4|    100000|     100|0.85038482|  PASSED  
          sts_serial|   4|    100000|     100|0.67397315|  PASSED  
          sts_serial|   5|    100000|     100|0.60585098|  PASSED  
          sts_serial|   5|    100000|     100|0.54968851|  PASSED  
          sts_serial|   6|    100000|     100|0.99277070|  PASSED  
          sts_serial|   6|    100000|     100|0.68076764|  PASSED  
          sts_serial|   7|    100000|     100|0.60350923|  PASSED  
          sts_serial|   7|    100000|     100|0.16223947|  PASSED  
          sts_serial|   8|    100000|     100|0.44079302|  PASSED  
          sts_serial|   8|    100000|     100|0.27416319|  PASSED  
          sts_serial|   9|    100000|     100|0.58490231|  PASSED  
          sts_serial|   9|    100000|     100|0.49073425|  PASSED  
          sts_serial|  10|    100000|     100|0.98547876|  PASSED  
          sts_serial|  10|    100000|     100|0.61975871|  PASSED  
          sts_serial|  11|    100000|     100|0.83174032|  PASSED  
          sts_serial|  11|    100000|     100|0.74740837|  PASSED  
          sts_serial|  12|    100000|     100|0.04825508|  PASSED  
          sts_serial|  12|    100000|     100|0.34237994|  PASSED  
          sts_serial|  13|    100000|     100|0.25836505|  PASSED  
          sts_serial|  13|    100000|     100|0.54657267|  PASSED  
          sts_serial|  14|    100000|     100|0.53319336|  PASSED  
          sts_serial|  14|    100000|     100|0.66858312|  PASSED  
          sts_serial|  15|    100000|     100|0.17449009|  PASSED  
          sts_serial|  15|    100000|     100|0.36364894|  PASSED  
          sts_serial|  16|    100000|     100|0.74664519|  PASSED  
          sts_serial|  16|    100000|     100|0.61780527|  PASSED  
         rgb_bitdist|   1|    100000|     100|0.62404389|  PASSED  
         rgb_bitdist|   2|    100000|     100|0.76697955|  PASSED  
         rgb_bitdist|   3|    100000|     100|0.33500938|  PASSED  
^C

real    8m36.320s
user    11m9.300s
sys     0m13.596s

[toc] | [prev] | [next] | [standalone]


#31040

From"M.M." <mmarszik@gmail.com>
Date2017-12-08 08:53 -0800
Message-ID<2300ddec-34df-45fb-bd86-bf5972683a85@googlegroups.com>
In reply to#31034
On Thursday, December 7, 2017 at 1:10:25 AM UTC+1, AK wrote:
> Użytkownik "slawek" <fake@fakeemail.com> napisał:
> >> rand() & 0xFF  // ;)
> >
> > Lepiej (rand() >> 4) & 0xff
> >
> > Najniższe bity wywalić.
> 
> To prawda, ale oni chcieli "szybciej", a nie "lepiej" :)
> PS: Oczywiscie generalnie to byl zart (no nie tak znow w 100%:)
> 
> AK

Generator Fibonacciego też można napisać w 10 minut na 
kolanie i, jak na razie, przeszedł kilkanaście początkowych 
diehardera nawet na m=30. Generowanie liczb jest ekstremalnie
szybkie, nie zawiera nawet ifa. Niestety nie wiadomo czy dla
innych zarodków też zachowa się tak samo dobrze :/ I drugie
niestety: poniższa implementacja wymaga ponad 16k bajtów ram.

Kod:
class FibRnd {
private:
    unsigned int a,b,c;
    unsigned int *x;
    unsigned int max;

public:
    FibRnd(unsigned int seed) {
        max = 1<<12;
        a = 0;
        b = 16;
        c = max-1;
        x = new unsigned int[max];
        for( unsigned int i=0 ; i<max * 4 ; i++ ) {
            x[i%max] <<= 4;
            x[i%max] ^= seed = ((seed * 359ull + 3733ull) % 1057767ull);
        }
    }
    ~FibRnd() {
        delete[] x;
    }
    unsigned int operator ()() {
        a = (a+1)&(max-1);
        b = (b+1)&(max-1);
        c = (c+1)&(max-1);
        return x[c] = x[a] + x[b];
    }

};

int main( int argc, char *argv[] ) {
    FibRnd rnd((unsigned int)time(NULL));
    while( true ) {
        unsigned char x[N];
        for( int i=0 ; i<N ; i++ )
            x[i] = (unsigned char)rnd();
        fwrite( x , 1 , N , stdout );
    }
    return 0;
}

Test:
time ./frnd  | dieharder -a -m 30 -g 200
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  3.00e+07  |2482448351|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|    3000|0.29234458|  PASSED  
      diehard_operm5|   0|   1000000|    3000|0.51398474|  PASSED  
  diehard_rank_32x32|   0|     40000|    3000|0.36767415|  PASSED  
    diehard_rank_6x8|   0|    100000|    3000|0.69227346|  PASSED  
   diehard_bitstream|   0|   2097152|    3000|0.30960016|  PASSED  
        diehard_opso|   0|   2097152|    3000|0.85888419|  PASSED  
        diehard_oqso|   0|   2097152|    3000|0.67207083|  PASSED  
         diehard_dna|   0|   2097152|    3000|0.00012554|   WEAK   
diehard_count_1s_str|   0|    256000|    3000|0.51597335|  PASSED  
diehard_count_1s_byt|   0|    256000|    3000|0.26197695|  PASSED  
 diehard_parking_lot|   0|     12000|    3000|0.17469806|  PASSED  
    diehard_2dsphere|   2|      8000|    3000|0.54418532|  PASSED  
    diehard_3dsphere|   3|      4000|    3000|0.87789531|  PASSED  
     diehard_squeeze|   0|    100000|    3000|0.26815462|  PASSED  
        diehard_sums|   0|       100|    3000|0.00000000|  FAILED  
        diehard_runs|   0|    100000|    3000|0.01445376|  PASSED  
        diehard_runs|   0|    100000|    3000|0.00537657|  PASSED  
       diehard_craps|   0|    200000|    3000|0.93729302|  PASSED  
       diehard_craps|   0|    200000|    3000|0.34274658|  PASSED  



Pozdrawiam

P.S.
Nie patrzcie na diehard_sums, bo ten test zawiera błędy.

[toc] | [prev] | [next] | [standalone]


#31043

From"M.M." <mmarszik@gmail.com>
Date2017-12-09 07:27 -0800
Message-ID<75559562-1fa2-4af4-87e0-4d4284bb50d9@googlegroups.com>
In reply to#31040
On Friday, December 8, 2017 at 5:53:22 PM UTC+1, M.M. wrote:
> On Thursday, December 7, 2017 at 1:10:25 AM UTC+1, AK wrote:
> > Użytkownik "slawek" <fake@fakeemail.com> napisał:
> > >> rand() & 0xFF  // ;)
> > >
> > > Lepiej (rand() >> 4) & 0xff
> > >
> > > Najniższe bity wywalić.
> > 
> > To prawda, ale oni chcieli "szybciej", a nie "lepiej" :)
> > PS: Oczywiscie generalnie to byl zart (no nie tak znow w 100%:)
> > 
> > AK
> 
> Generator Fibonacciego też można napisać w 10 minut na 
> kolanie i, jak na razie, przeszedł kilkanaście początkowych 
> diehardera nawet na m=30. Generowanie liczb jest ekstremalnie
> szybkie, nie zawiera nawet ifa. Niestety nie wiadomo czy dla
> innych zarodków też zachowa się tak samo dobrze :/ I drugie
> niestety: poniższa implementacja wymaga ponad 16k bajtów ram.
> 
> Kod:
> class FibRnd {
> private:
>     unsigned int a,b,c;
>     unsigned int *x;
>     unsigned int max;
> 
> public:
>     FibRnd(unsigned int seed) {
>         max = 1<<12;
>         a = 0;
>         b = 16;
>         c = max-1;
>         x = new unsigned int[max];
>         for( unsigned int i=0 ; i<max * 4 ; i++ ) {
>             x[i%max] <<= 4;
>             x[i%max] ^= seed = ((seed * 359ull + 3733ull) % 1057767ull);
>         }
>     }
>     ~FibRnd() {
>         delete[] x;
>     }
>     unsigned int operator ()() {
>         a = (a+1)&(max-1);
>         b = (b+1)&(max-1);
>         c = (c+1)&(max-1);
>         return x[c] = x[a] + x[b];
>     }
> 
> };
> 
> int main( int argc, char *argv[] ) {
>     FibRnd rnd((unsigned int)time(NULL));
>     while( true ) {
>         unsigned char x[N];
>         for( int i=0 ; i<N ; i++ )
>             x[i] = (unsigned char)rnd();
>         fwrite( x , 1 , N , stdout );
>     }
>     return 0;
> }

Całego diehardera przeszedł na m=30. Nie wiadomo czy dla innych zarodków też
przejdzie, ale jak generator nie musi być super równomierny, a ma być
bardzo szybki, to chyba nie ma nic lepszego.


Generator zwraca tylko 8 najmłodszych bitów. Ciekawe czy działałby lepiej,
gdyby zwracał 8 innych bitów niż najstarsze, bo na wydajność to praktycznie
by nie wpłynęło. Generator może też zwracać więcej bitów, np. 16 bitów, lub 32 bity, a jakby go zaimplementować na typie uint64 lub uint128, to mógłby 
zwracać 64 lub 128 bitów. Przyspieszyłoby go to jeszcze do 16 razy. Jak
myślicie, jakość generowanych liczb by spadła?


Wyniki testu dla 8 najmłodszych bitów:

time ./frnd  | dieharder -a -m 30 -g 200 
#=============================================================================#
#            dieharder version 3.31.1 Copyright 2003 Robert G. Brown          #
#=============================================================================#
   rng_name    |rands/second|   Seed   |
stdin_input_raw|  3.00e+07  |2482448351|
#=============================================================================#
        test_name   |ntup| tsamples |psamples|  p-value |Assessment
#=============================================================================#
   diehard_birthdays|   0|       100|    3000|0.29234458|  PASSED  
      diehard_operm5|   0|   1000000|    3000|0.51398474|  PASSED  
  diehard_rank_32x32|   0|     40000|    3000|0.36767415|  PASSED  
    diehard_rank_6x8|   0|    100000|    3000|0.69227346|  PASSED  
   diehard_bitstream|   0|   2097152|    3000|0.30960016|  PASSED  
        diehard_opso|   0|   2097152|    3000|0.85888419|  PASSED  
        diehard_oqso|   0|   2097152|    3000|0.67207083|  PASSED  
         diehard_dna|   0|   2097152|    3000|0.00012554|   WEAK   
diehard_count_1s_str|   0|    256000|    3000|0.51597335|  PASSED  
diehard_count_1s_byt|   0|    256000|    3000|0.26197695|  PASSED  
 diehard_parking_lot|   0|     12000|    3000|0.17469806|  PASSED  
    diehard_2dsphere|   2|      8000|    3000|0.54418532|  PASSED  
    diehard_3dsphere|   3|      4000|    3000|0.87789531|  PASSED  
     diehard_squeeze|   0|    100000|    3000|0.26815462|  PASSED  
        diehard_sums|   0|       100|    3000|0.00000000|  FAILED  
        diehard_runs|   0|    100000|    3000|0.01445376|  PASSED  
        diehard_runs|   0|    100000|    3000|0.00537657|  PASSED  
       diehard_craps|   0|    200000|    3000|0.93729302|  PASSED  
       diehard_craps|   0|    200000|    3000|0.34274658|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|    3000|0.83716130|  PASSED  
 marsaglia_tsang_gcd|   0|  10000000|    3000|0.05530917|  PASSED  
         sts_monobit|   1|    100000|    3000|0.85138074|  PASSED  
            sts_runs|   2|    100000|    3000|0.44074715|  PASSED  
          sts_serial|   1|    100000|    3000|0.21861505|  PASSED                                                                                                                                                                                                              
          sts_serial|   2|    100000|    3000|0.28454007|  PASSED                                                                                                                                                                                                              
          sts_serial|   3|    100000|    3000|0.61438900|  PASSED                                                                                                                                                                                                              
          sts_serial|   3|    100000|    3000|0.22112971|  PASSED                                                                                                                                                                                                              
          sts_serial|   4|    100000|    3000|0.95517930|  PASSED                                                                                                                                                                                                              
          sts_serial|   4|    100000|    3000|0.16562539|  PASSED                                                                                                                                                                                                              
          sts_serial|   5|    100000|    3000|0.28466376|  PASSED                                                                                                                                                                                                              
          sts_serial|   5|    100000|    3000|0.10776582|  PASSED                                                                                                                                                                                                              
          sts_serial|   6|    100000|    3000|0.45920174|  PASSED                                                                                                                                                                                                              
          sts_serial|   6|    100000|    3000|0.20303651|  PASSED                                                                                                                                                                                                              
          sts_serial|   7|    100000|    3000|0.49722161|  PASSED                                                                                                                                                                                                              
          sts_serial|   7|    100000|    3000|0.80685114|  PASSED                                                                                                                                                                                                              
          sts_serial|   8|    100000|    3000|0.41749281|  PASSED  
          sts_serial|   8|    100000|    3000|0.94116829|  PASSED  
          sts_serial|   9|    100000|    3000|0.53222747|  PASSED  
          sts_serial|   9|    100000|    3000|0.58938752|  PASSED  
          sts_serial|  10|    100000|    3000|0.26245753|  PASSED  
          sts_serial|  10|    100000|    3000|0.44889624|  PASSED  
          sts_serial|  11|    100000|    3000|0.02441041|  PASSED  
          sts_serial|  11|    100000|    3000|0.00181544|   WEAK   
          sts_serial|  12|    100000|    3000|0.04469190|  PASSED  
          sts_serial|  12|    100000|    3000|0.15885960|  PASSED  
          sts_serial|  13|    100000|    3000|0.02979468|  PASSED  
          sts_serial|  13|    100000|    3000|0.77864508|  PASSED  
          sts_serial|  14|    100000|    3000|0.00025286|   WEAK   
          sts_serial|  14|    100000|    3000|0.03756306|  PASSED  
          sts_serial|  15|    100000|    3000|0.01495578|  PASSED  
          sts_serial|  15|    100000|    3000|0.25646264|  PASSED  
          sts_serial|  16|    100000|    3000|0.10219212|  PASSED  
          sts_serial|  16|    100000|    3000|0.49916583|  PASSED  
         rgb_bitdist|   1|    100000|    3000|0.24353012|  PASSED  
         rgb_bitdist|   2|    100000|    3000|0.33193645|  PASSED  
         rgb_bitdist|   3|    100000|    3000|0.77606973|  PASSED  
         rgb_bitdist|   4|    100000|    3000|0.48072339|  PASSED  
         rgb_bitdist|   5|    100000|    3000|0.02841032|  PASSED  
         rgb_bitdist|   6|    100000|    3000|0.72828838|  PASSED  
         rgb_bitdist|   7|    100000|    3000|0.06921169|  PASSED  
         rgb_bitdist|   8|    100000|    3000|0.41825331|  PASSED  
         rgb_bitdist|   9|    100000|    3000|0.91108880|  PASSED  
         rgb_bitdist|  10|    100000|    3000|0.43222942|  PASSED  
         rgb_bitdist|  11|    100000|    3000|0.61747840|  PASSED  
         rgb_bitdist|  12|    100000|    3000|0.30358537|  PASSED  
rgb_minimum_distance|   2|     10000|   30000|0.04817726|  PASSED                                                                                                                                                                                                              
rgb_minimum_distance|   3|     10000|   30000|0.83114815|  PASSED                                                                                                                                                                                                              
rgb_minimum_distance|   4|     10000|   30000|0.00560345|  PASSED                                                                                                                                                                                                              
rgb_minimum_distance|   5|     10000|   30000|0.00668000|  PASSED                                                                                                                                                                                                              
    rgb_permutations|   2|    100000|    3000|0.24834843|  PASSED                                                                                                                                                                                                              
    rgb_permutations|   3|    100000|    3000|0.07901995|  PASSED                                                                                                                                                                                                              
    rgb_permutations|   4|    100000|    3000|0.86363673|  PASSED                                                                                                                                                                                                              
    rgb_permutations|   5|    100000|    3000|0.53472342|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|   0|   1000000|    3000|0.88718714|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|   1|   1000000|    3000|0.26184722|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|   2|   1000000|    3000|0.96379709|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|   3|   1000000|    3000|0.42731884|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|   4|   1000000|    3000|0.97153879|  PASSED  
      rgb_lagged_sum|   5|   1000000|    3000|0.44772137|  PASSED  
      rgb_lagged_sum|   6|   1000000|    3000|0.98129048|  PASSED  
      rgb_lagged_sum|   7|   1000000|    3000|0.14721559|  PASSED  
      rgb_lagged_sum|   8|   1000000|    3000|0.56080283|  PASSED  
      rgb_lagged_sum|   9|   1000000|    3000|0.10075053|  PASSED  
      rgb_lagged_sum|  10|   1000000|    3000|0.52807343|  PASSED  
      rgb_lagged_sum|  11|   1000000|    3000|0.16251504|  PASSED  
      rgb_lagged_sum|  12|   1000000|    3000|0.06012319|  PASSED  
      rgb_lagged_sum|  13|   1000000|    3000|0.02819854|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  14|   1000000|    3000|0.56292316|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  15|   1000000|    3000|0.03627918|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  16|   1000000|    3000|0.31141215|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  17|   1000000|    3000|0.23430245|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  18|   1000000|    3000|0.96322096|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  19|   1000000|    3000|0.05275294|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  20|   1000000|    3000|0.16858733|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  21|   1000000|    3000|0.27858252|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  22|   1000000|    3000|0.86056685|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  23|   1000000|    3000|0.49540101|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  24|   1000000|    3000|0.96278283|  PASSED                                                                                                                                                                                                              
      rgb_lagged_sum|  25|   1000000|    3000|0.85687248|  PASSED  
      rgb_lagged_sum|  26|   1000000|    3000|0.52521927|  PASSED  
      rgb_lagged_sum|  27|   1000000|    3000|0.47528244|  PASSED  
      rgb_lagged_sum|  28|   1000000|    3000|0.68680905|  PASSED  
      rgb_lagged_sum|  29|   1000000|    3000|0.95196801|  PASSED  
      rgb_lagged_sum|  30|   1000000|    3000|0.35409145|  PASSED  
      rgb_lagged_sum|  31|   1000000|    3000|0.79745235|  PASSED  
      rgb_lagged_sum|  32|   1000000|    3000|0.93842994|  PASSED  
     rgb_kstest_test|   0|     10000|   30000|0.00167822|   WEAK   
     dab_bytedistrib|   0|  51200000|      30|0.80854497|  PASSED  
             dab_dct| 256|     50000|      30|0.86426890|  PASSED  
Preparing to run test 207.  ntuple = 0
        dab_filltree|  32|  15000000|      30|0.66975905|  PASSED  
        dab_filltree|  32|  15000000|      30|0.56236231|  PASSED  
Preparing to run test 208.  ntuple = 0
       dab_filltree2|   0|   5000000|      30|0.59454036|  PASSED  
       dab_filltree2|   1|   5000000|      30|0.75484914|  PASSED  
Preparing to run test 209.  ntuple = 0
        dab_monobit2|  12|  65000000|      30|0.23905375|  PASSED  

real    1437m24.217s
user    1948m33.944s
sys     88m11.892s

[toc] | [prev] | [next] | [standalone]


#30950

Fromslawek <fake@fakeemail.com>
Date2017-11-29 14:04 +0100
Message-ID<almarsoft.876885087562806864@news.v.pl>
In reply to#30947
On Wed, 29 Nov 2017 02:23:29 -0800 (PST), "M.M." <mmarszik@gmail.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.

[toc] | [prev] | [next] | [standalone]


#30959

From"AK" <nobody@nowhere.net>
Date2017-11-29 19:38 +0100
Message-ID<ovmus5$1p8f$1@gioia.aioe.org>
In reply to#30947
Użytkownik "M.M." <mmarszik@gmail.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 

[toc] | [prev] | [next] | [standalone]


#30958

From"AK" <nobody@nowhere.net>
Date2017-11-29 19:34 +0100
Message-ID<ovmuk9$1oq1$1@gioia.aioe.org>
In reply to#30946
No brawo! :) Nic dodac nic ujac (zwlaszcza tekturka:))

AK

Użytkownik "slawek" <fake@fakeemail.com> napisał w wiadomości 
news:almarsoft.8214239723429596713@news.v.pl...
> On Wed, 29 Nov 2017 00:48:54 -0800 (PST), "M.M." <mmarszik@gmail.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? 

[toc] | [prev] | [next] | [standalone]


#30957

From"AK" <nobody@nowhere.net>
Date2017-11-29 19:29 +0100
Message-ID<ovmuas$1o6c$1@gioia.aioe.org>
In reply to#30945
Użytkownik "M.M." <mmarszik@gmail.com> napisał:
> Użytkownik "M.M." <mmarszik@gmail.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

[toc] | [prev] | [next] | [standalone]


#30915

Fromszykcech@gmail.com
Date2017-11-28 05:50 -0800
Message-ID<c9ac540a-c37a-43e9-829c-4722d5f85038@googlegroups.com>
In reply to#30911
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...

[toc] | [prev] | [next] | [standalone]


#30917

Fromszykcech@gmail.com
Date2017-11-28 06:09 -0800
Message-ID<47ef8d38-c101-411a-b212-e666415550f2@googlegroups.com>
In reply to#30915
> gwarantuje rozkład normalny otrzymywanych liczb...

Raczej rozkład liniowy...

[toc] | [prev] | [next] | [standalone]


#30926

FromAdam Klobukowski <adamklobukowski@gmail.com>
Date2017-11-28 08:39 -0800
Message-ID<0c7a5465-f216-436c-985c-a033983709fe@googlegroups.com>
In reply to#30915
W dniu wtorek, 28 listopada 2017 14:50:58 UTC+1 użytkownik szyk...@gmail.com napisał:
> 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...

Dzięki, ale ja nie chcę C, C++, ani C++11.

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

AdamK

[toc] | [prev] | [next] | [standalone]


#30928

Fromslawek <fake@fakeemail.com>
Date2017-11-28 20:13 +0100
Message-ID<almarsoft.3458262175710083257@news.v.pl>
In reply to#30926
On Tue, 28 Nov 2017 08:39:13 -0800 (PST), Adam Klobukowski 
<adamklobukowski@gmail.com> wrote:
> 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

[toc] | [prev] | [next] | [standalone]


#30936

FromAdam Klobukowski <adamklobukowski@gmail.com>
Date2017-11-28 21:59 -0800
Message-ID<b7e9c7d1-798a-4a0b-8167-a214ebcce75d@googlegroups.com>
In reply to#30928
W dniu wtorek, 28 listopada 2017 20:13:36 UTC+1 użytkownik slawek napisał:
> On Tue, 28 Nov 2017 08:39:13 -0800 (PST), Adam Klobukowski 
> <adamklobukowski@gmail.com> wrote:
> > 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.

AdamK

[toc] | [prev] | [next] | [standalone]


#30938

From"Radoslaw Szwed" <radekszwed@pochta.fm>
Date2017-11-29 07:55 +0100
Message-ID<ovllm1$1g4h$1@gioia.aioe.org>
In reply to#30936
Użytkownik "Adam Klobukowski" <adamklobukowski@gmail.com> napisał w wiadomości 
news:b7e9c7d1-798a-4a0b-8167-a214ebcce75d@googlegroups.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

[toc] | [prev] | [next] | [standalone]


#30955

From"AK" <nobody@nowhere.net>
Date2017-11-29 18:48 +0100
Message-ID<ovmrum$1je2$1@gioia.aioe.org>
In reply to#30936
Użytkownik "Adam Klobukowski" <adamklobukowski@gmail.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

[toc] | [prev] | [next] | [standalone]


#30966

Fromslawek <fake@fakeemail.com>
Date2017-11-29 20:29 +0100
Message-ID<almarsoft.200007831194143833@news.v.pl>
In reply to#30955
On Wed, 29 Nov 2017 18:48:54 +0100, "AK" <nobody@nowhere.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ć.

[toc] | [prev] | [next] | [standalone]


#30968

From"AK" <nobody@nowhere.net>
Date2017-11-29 20:38 +0100
Message-ID<ovn2bt$4oe$1@node1.news.atman.pl>
In reply to#30966
Użytkownik "slawek" <fake@fakeemail.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 

[toc] | [prev] | [next] | [standalone]


#30975

Frombartekltg <bartekltg@gmail.com>
Date2017-11-29 20:43 -0800
Message-ID<1caa2ca3-5e23-4d06-935e-65942425784a@googlegroups.com>
In reply to#30968
On Wednesday, November 29, 2017 at 8:38:38 PM UTC+1, AK wrote:
> Użytkownik "slawek" <fake@fakeemail.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

[toc] | [prev] | [next] | [standalone]


Page 2 of 3 — ← Prev page 1 [2] 3  Next page →

Back to top | Article view | pl.comp.programming


csiph-web