eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPojemnik na liczby losoweRe: Pojemnik na liczby losowe
  • Data: 2011-06-24 16:19:30
    Temat: Re: Pojemnik na liczby losowe
    Od: Tubylerczyk <t...@d...pl> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    W dniu 2011-06-24 09:09, Mariusz Marszałkowski pisze:
    > srand( wszystko_co_ci_przyjdzie_do_glowy );
    > time_t s = time(NULL) + 2;
    > while( s> time(NULL) )
    > rand();
    > return rand();

    Ja to rozwiązałem w ten sposób:
    Podczepić hooka pod zdarzenia przycisku klawiatury. W przypadku
    uderzenia klawisza odczytujemy czas - ilość taktów zegara CPU za pomocą
    rdtsc. Wyliczamy odstępy między kolejnymi uderzeniami - liczba dodatnia
    (aby nie było problemów, program musi działać tylko na jednym rdzeniu
    SetProcessAffinityMask(GetCurrentProcess(), 1) bo inaczej raz odczyta z
    jednego licznika a raz z drugiego).
    Sam odstęp jeszcze nie mówi ile bitów losowych da się z niego uzyskać,
    autorepeat klawisza daje niemal identyczne czasy i mało w nim bitów
    losowych. Potrzebna jest różnica, o ile zmienił się odstęp - im większa,
    tym więcej bitów losowych. Wyliczyć ile bitów - z wartości bezwzględnej
    policzyć indeks najstarszego zapalonego bitu + 1.
    Bitami losowymi będą najmłodsze bity ostatniego czasu. Nie da się
    wykorzystać znaku różnicy odstępów ponieważ ma rozkład nie losowy.
    Typowe bębnienie po klawiaturze dawało strumień rzędu 800 bitów/s.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: