eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPojemnik na liczby losoweRe: Pojemnik na liczby losowe
  • Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.onet.pl!.POSTED!not-for-mail
    From: Tubylerczyk <t...@d...pl>
    Newsgroups: pl.comp.programming
    Subject: Re: Pojemnik na liczby losowe
    Date: Fri, 24 Jun 2011 18:19:30 +0200
    Organization: http://onet.pl
    Lines: 22
    Message-ID: <iu2de7$cm1$1@news.onet.pl>
    References: <ittsd2$hm1$1@news.onet.pl> <itveib$jav$1@news.onet.pl>
    <itvki0$an8$1@news.onet.pl>
    <2...@x...googlegroups.com>
    NNTP-Posting-Host: 194.117.241.254
    Mime-Version: 1.0
    Content-Type: text/plain; charset=ISO-8859-2; format=flowed
    Content-Transfer-Encoding: 8bit
    X-Trace: news.onet.pl 1308932359 12993 194.117.241.254 (24 Jun 2011 16:19:19 GMT)
    X-Complaints-To: n...@o...pl
    NNTP-Posting-Date: Fri, 24 Jun 2011 16:19:19 +0000 (UTC)
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.2.18) Gecko/20110616
    Thunderbird/3.1.11
    In-Reply-To: <2...@x...googlegroups.com>
    X-Antivirus: avast! (VPS 110624-0, 2011-06-24), Outbound message
    X-Antivirus-Status: Clean
    Xref: news-archive.icm.edu.pl pl.comp.programming:191119
    [ ukryj 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: