-
Data: 2017-12-08 17:53:20
Temat: Re: Prosty generator pseudolosowy 8bit z limitem
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Thursday, December 7, 2017 at 1:10:25 AM UTC+1, AK wrote:
> Użytkownik "slawek" <f...@f...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.
Następne wpisy z tego wątku
- 09.12.17 16:27 M.M.
Najnowsze wątki z tej grupy
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- testy-wyd-sort - Podsumowanie
Najnowsze wątki
- 2025-04-30 Szczecin => Key Account Manager IT <=
- 2025-04-30 Chiny => Koordynator Produkcji / Przedstawiciel ds. rozwoju produktu <
- 2025-04-30 Wrocław => Konsultant wdrożeniowy Comarch XL (Logistyka, WMS, Produk
- 2025-04-29 Nożownik zaatakował i zabił lekarza
- 2025-04-29 Polecam żarówki Blackout na Blackout z dużym gwintem
- 2025-04-29 Porażka kasty sędziowskiej przed Trybunałem Sprawiedliwości UE
- 2025-04-29 Kombinacja znaków A11 i B33?
- 2025-04-29 Na jakim etapie jest sprawa karna "gaśnicowego" Brauna z grudnia 2023?
- 2025-04-29 TSUE jest "przeciw a nawet za" neosędziami :-)
- 2025-04-29 Wrocław => Konsultant wdrożeniowy (systemy kontrolingowe) <=
- 2025-04-29 China => Production Coordinator / Representant Product Dev <=
- 2025-04-29 Warszawa => Specjalista rekrutacji IT <=
- 2025-04-28 Hiszpania bez pradu
- 2025-04-28 chinska stal
- 2025-04-28 QR kody