eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingPrawdziwie losowe liczbyRe: Prawdziwie losowe liczby
  • Data: 2016-09-22 23:03:02
    Temat: Re: Prawdziwie losowe liczby
    Od: bartekltg <b...@g...com> szukaj wiadomości tego autora
    [ pokaż wszystkie nagłówki ]

    On 22.09.2016 22:35, Borneq wrote:
    > Chodzi mi o sposób generowania przez zdarzenia związane z klawiaturą i
    > myszką. W Linuxie jest zbiornik losowości, ale po pierwsze chcę użyć w
    > Windows a po drugie generować na bieżąco.

    Biblioteka standardowa, nagłowek <random>,
    klasa random_device.

    http://en.cppreference.com/w/cpp/numeric/random/rand
    om_device

    Sprawdź, czy w Twojej implementacji działa metoda entropy();
    Powinna informować, czy dostałeś "prawdziwie losowe" dane,
    ale z implementacją różnie bywa.

    > Jest zdarzenie, odczytujemy najmłodsze bity licznika instrukcji rdtsc.
    > Pojawia się pierwszy problem - w Windows i Linuxie nie ma bezpośredniej
    > możliwości odczytu z przerwania sprzętowego w trybie użytkownika. Trzeba
    > odczytać rdtsc po jakimś czasie z obsługi biblioteki graficznej. W C++
    > może to być np. OpenCV. Teraz najmłodsze bity będą zupełnie losowe, jest
    > to problem matematyczny - do którego bitu jest losowo? A może losowość
    > zmniejsza się stopniowo - co to znaczy? Na pewno bity zmieniające się co
    > godzinę nie są losowe, bo przez jedną godzinę będą same zera a za
    > godzinę same jedynki.

    Jeśli odczytujesz w równych odstępach, w nawet najmłodszy bit nie
    będzie losowy!

    Losowość musi przyjść albo od użytkownika, albo ze sprzętowego
    generatora.


    > Myślę że do bębnienia w klawiaturę wystarczy
    > granica niemierzalna przez człowieka 1/30 s. Choć z drugiej strony
    > przerwania myszki mogą być częstsze (?) i wtedy kolejne zdarzania będą
    > miały te same a nie losowe bity rzędu 1/30 s.
    > Zegar ma 3 GHz, 1 30 s to 100 mln, czyli dało by radę 26 bitów z jednego
    > klepnięcia z klawiaturę, lub może przyjąć 24 bity czyli 3 bajty z
    > jednego zderzania np. tez mousemove myszki.

    Użyj gotowca.
    Random device pod linuxem gada /dev/urandom, /dev/random
    lub sprzętowym https://en.wikipedia.org/wiki/RdRand

    http://en.cppreference.com/w/cpp/numeric/random/rand
    om_device/random_device

    VS też obiecuje "non-deterministic and cryptographically secure"
    https://msdn.microsoft.com/library/bb982250.aspx

    > Inna sprawa. Zapowiadane były procesory ze sprzętową generacją liczb
    > losowych które mogły by generować ich wielką ilość. Jak się sprawy mają.

    Dwa linki do tyłu.

    Podsumowując, użyj gotowca. Podałem namiary na c++, ale jeśli
    nie piszesz w COBOLU, będziesz miał do tego dostęp.

    A i dobrze się zastanów, czy aby na pewno potrzebujesz "prawdziwych"
    liczb losowych. Poza kryptografią nie są takie konieczne.

    pzdr
    bartekltg



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: