-
Data: 2017-12-07 05:15:22
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
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
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- 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
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
Najnowsze wątki
- 2025-03-02 Tusk idzie na rekord deportacji po 1989 [Będzie popyt na prawników]
- 2025-03-01 Obywatel telefonuje 112 lub 986
- 2025-03-01 detektyw (?) Rutkowski działał jako prasa
- 2025-03-01 "Policjant został ujęty obywatelsko..."
- 2025-03-01 zatrzymanie zbyszka maja
- 2025-03-01 Warszawa => Expert Recruiter 360 <=
- 2025-03-01 Chrzanów => NodeJS Developer <=
- 2025-03-01 Warszawa => Gen AI Engineer <=
- 2025-03-01 Wrocław => Konsultant wdrożeniowy Comarch XL/Optima (Księgowość i
- 2025-03-01 Kraków => Technical Team Leader (Clojure, Java) <=
- 2025-03-01 Zrobił TV OLED z TV LCD
- 2025-03-01 Gdynia => Sales Executive / KAM <=
- 2025-03-01 Błonie => Sales Specialist <=
- 2025-03-01 Ryga => Konsultant Wdrożeniowy Comarch XL/Optima (Księgowość i Kad
- 2025-03-01 Żerniki => Dyspozytor Międzynarodowy <=