Zasugerowano, aby ten artykuł (lub sekcję) z artykułem Generator liczb losowych. (dyskusja)

Generator liczb pseudolosowych (Pseudo-Random Number Generator, lub PRNG) to program lub podprogram, który na podstawie niewielkiej ilości informacji (ziarno, zarodek, ang. seed) generuje deterministycznie ciąg bitów, który pod pewnymi względami jest nieodróżnialny od ciągu uzyskanego z prawdziwie losowego źródła.

stan początkowy to wartość ziarna żeby wygenerować bit:

Generator ten nie jest bezpieczny - dla pewnych kombinacji parametrów jest prawie losowy, dla innych bardzo szybko staje się okresowy. Dodatkowo, znane są ogólne metody obliczania parametrów i przewidywania zachowania takich PRNG na podstawie obserwacji wyników.

Proste generatory

Uproszczony liniowy generator kongruencyjny (Linear Congruential Generator) określony jest następującym algorytmem (a, b, i m to odpowiednio dobrane znane stałe):

hale namiotowe strony www katowice fotki wrocław zespół muzyczny lębork Profiss zabawki edukacyjne gramatyka niemieckiego Praca mazowieckie życzenia

Spośród używanych algorytmów zakwalifikowanych do tej kategorii, na wyróżnienie zasługuje Blum Blum Shub. Zostało wykazane, iż złamanie tego PRNG jest przynajmniej tak samo trudne jak zadanie faktoryzacji iloczynów dużych liczb pierwszych. Jest jednak mniej popularny ze względu na relatywnie niską wydajność w porównaniu z alternatywami.

Generatory liczb pseudolosowych nie generują ciągów prawdziwie losowych – generator inicjowany ziarnem, które może przyjąć k różnych wartości, jest w stanie wyprodukować co najwyżej k różnych ciągów liczb. Co więcej, ponieważ rozmiar zmiennych reprezentujących wewnętrzny stan generatora jest ograniczony (zwykle decyzją programisty, do kilkudziesięciu lub kilkuset bitów; a rzadziej, po prostu rozmiarem pamięci komputera), i ponieważ w związku z tym może on znajdować się tylko w ograniczonej liczbie stanów, bez dostarczania nowych danych z zewnątrz musi po jakimś czasie dokonać pełnego cyklu i zacząć generować te same wartości. Teoretyczny limit długości cyklu wyrażony jest przez 2n, gdzie n to liczba bitów przeznaczonych na przechowywanie stanu wewnętrznego. W praktyce, większość generatorów ma znacznie krótsze okresy.

Zobacz też

szkoła muzyczna Restauracja włoska w Krakowie sts jas.valid.nowaruda.pl tłumaczenia przysięgłeunieście - bus Kraków - zdrowie - shalimar - hypnose tusz do rzes - Total Body Lift - the one dolce gabbana - tanie perfumy warszawa - silver shadow perfumy

Zastosowanie w kryptografii

Szczególną klasę PRNG stanowią generatory uznane za bezpieczne do zastosowań kryptograficznych. Kryptografia opiera się na generatorach liczb pseudolosowych przede wszystkim w celu tworzenia unikalnych kluczy stałych oraz sesyjnych. Ze względu na fakt, że bezpieczeństwo komunikacji zależy od jakości klucza, od implementacji PRNG stosowanych w takich celach oczekuje się między innymi, że:

Generatory kryptograficzne

Do budowy PRNG na potrzeby kryptografii najczęściej używa się iteracyjnych wywołań kryptograficznie bezpiecznej funkcji haszującej typu MD5 lub SHA-1, albo stosuje się w podobny sposób sprawdzone szyfry strumieniowe lub blokowe. Aby zapewnić nieprzewidywalność wyników, do okresowej (re-)inicjalizacji takiego PRNG używa się trudne do przewidzenia zdarzenia zewnętrzne, takie jak interwały aktywności wejścia-wyjścia w systemie komputerowym, fluktuacje temperatury procesora lub płyty głównej, albo sygnał z dedykowanych, sprzętowych generatorów szumu uznawanego za prawdziwie niedeterministyczny.

Do wielu zastosowań, opisany powyżej rodzaj deterministycznej pseudolosowości jest w zupełności wystarczający. W grach komputerowych czy algorytmach probabilistycznych (takich jak np. całkowanie Monte Carlo) potrzebne jest jedynie źródło wartości o cechach przybliżonych do liczb prawdziwie losowych, chociaż jakość losowości może być decydująca dla dokładności obliczeń. Dlatego przy zastosowaniu każdego nowego generatora do celów obliczeń numerycznych należy sprawdzić jego własności statystyczne. W przypadku skorzystania z jednego z dobrze zbadanych generatorów można czasem bezpośrednio obliczyć długość cyklu, a pozostałe właściwości (jak np. równomierność rozkładu) są najczęściej znane. Można też skorzystać z jednego ze standardowych testów (test pokerowy, test serii itp).