Czym naprawdę jest przypadkowość


23

Jestem studentem informatyki i obecnie zapisuję się na kurs Symulacji Systemów i Modelowania. Obejmuje to radzenie sobie z codziennymi systemami wokół nas i symulowanie ich w różnych scenariuszach przez generowanie liczb losowych w różnych krzywych dystrybucyjnych, takich jak na przykład IID, Gaussa itp. Pracowałem nad projektem boids i właśnie uderzyło mnie pytanie, czym tak naprawdę jest „losowość”? Chodzi mi na przykład o to, że każda generowana przez nas liczba losowa, nawet w naszych językach programowania, takich jak Math.random()metoda w Javie, jest generowana zgodnie z „algorytmem”.

Skąd naprawdę wiemy, że ciąg liczb, który tworzymy, jest w rzeczywistości losowy i czy pomógłby nam symulować określony model tak dokładnie, jak to możliwe?



Odpowiedzi:


18

Krótka odpowiedź jest taka, że ​​nikt nie wie, czym jest prawdziwa przypadkowość, ani czy coś takiego istnieje. Jeśli chcesz skwantyfikować lub zmierzyć losowość dyskretnego obiektu, zwykle zwróciłbyś się do złożoności Kołmogorowa . Przed złożonością Kołmogorowa nie mieliśmy możliwości oszacowania losowości powiedzmy sekwencję liczb bez uwzględnienia procesu, który ją zrodził.

Oto intuicyjny przykład, który naprawdę wkurzał ludzi w ciągu dnia. Rozważ sekwencję rzutów monetą. Rezultatem jednego rzutu są albo głowy ( ), albo ogony ( T ). Powiedzmy, że wykonujemy dwa eksperymenty, w których rzucamy monetą 10 razy. Pierwszy eksperyment E 1 daje nam H , H , H , H , H , H , H , H , H , H . Drugi eksperyment E 2 daje nam T , T , H , T , H ,H.T.mi1H.,H.,H.,H.,H.,H.,H.,H.,H.,H.mi2) . Po zobaczeniu wyniku możesz pokusić się o stwierdzenie, że coś było nie tak z monetą w E 1 , a przynajmniej z jakiegoś dziwnego powodu to, co otrzymałeś, nie jest przypadkowe. Ale jeśli można zakładać zarówno H i T są prawdopodobne (moneta jest uczciwa), prawdopodobieństwo uzyskania albo E 1 lub E 2 jest równy ( 1 / 2 ) 10 . W rzeczywistości uzyskaniedowolnejokreślonej sekwencji jest tak samo prawdopodobne jak każde! Mimo to E 2 wydaje sięT.,T.,H.,T.,H.,T.,T.,H.,T.,H.mi1H.T.mi1mi2)(1/2))10mi2) losowy, a nie.mi1

Ogólnie rzecz biorąc, ponieważ złożoności Kołmogorowa nie można obliczyć, nie można obliczyć, jak losowy jest ciąg sekwencji liczb, bez względu na to, jaki rodzaj roszczenia spowodował „całkowicie losowy” proces.


W przypadku sekwencji nieskończonych mamy o wiele więcej narzędzi do definiowania losowości, takich jak normalność.
Denis

1
@dkuper Zauważ, że nieskończona sekwencja, której początkowe segmenty są losowe zgodnie z definicją złożoności Kołmogorowa, będzie normalna, ale bycie normalnym nie wystarcza, aby być czymś, co można uznać za naprawdę losowe. Na przykład istnieją liczby normalne, z których wszystkie początkowe segmenty mają więcej zer niż 0.
Quinn Culver

@Quinn Culver Tak Zgadzam się, normalność była tylko przykładem dodatkowego narzędzia, które mamy (między innymi) do nieskończonych sekwencji. Złożoność Kołmogorowa i inne są nadal przydatne.
Denis

8

W przypadku Javy (lub podobnych języków) znamy algorytm używany do tworzenia liczb losowych. Jeśli zaczyna się od pojedynczego materiału siewnego, numery nie są przypadkowe w ogóle, to znaczy, jeśli wiemy, w sekwencji 0 , ... , n , wiemy jak I + 1 , lub określona jako prawdopodobieństwa warunkowego: k , l , i : P ( a i + 1 = k a i = l ) { 0 ,aia0,,anai+1

k,l,ja:P.(zaja+1=kzaja=l){0,1}

Niemniej jednak te serie mogą spełniać właściwości (patrz np. WP: autokorelacja ), które spełniają liczby losowe i te właściwości często wystarczają do wykonania zadań, w których chcielibyśmy użyć „rzeczywistych” (np. Wygenerowanych przez jakiś proces fizyczny) liczb losowych, ale mogą „ wysilam się.


3

Nie ma pewności, czy dana sekwencja jest losowa, czy nie. Możesz jednak spojrzeć na cechy (lub parametry) sekwencji i obliczyć prawdopodobieństwo takiej sekwencji, biorąc pod uwagę rozkład zainteresowania.

Jeśli możesz wygenerować nieskończenie długą sekwencję za pomocą generatora losowego, powinien on mieć takie same parametry jak rozkład losowy. Na przykład, jeśli używasz standardowego rozkładu Gaussa , to twoja sekwencja powinna zbliżać się do średniej 0 i standardowego odchylenia 1 . Tak więc jednym wstępnym sposobem sprawdzenia generatora jest wygenerowanie naprawdę długiej sekwencji i sprawdzenie, czy jest ona zbliżona do pożądanego rozkładu losowego.(μ=0,σ=1)1

Możesz dodać dodatkowe momenty interesującego rozkładu (takie jak skośność) w celu dalszej weryfikacji. W przypadku liczb IID można również spróbować wyszkolić algorytm uczenia maszynowego w celu przewidywania nadchodzących elementów sekwencji, a następnie przetestować hipotezę zerową, że historia poprawia wydajność. Żadna z tych metod nie może jednak udowodnić, że sekwencja jest naprawdę losowa, aw najlepszym przypadku może rozpoznać, kiedy sekwencje NIE są losowe (do pewnego stopnia pewności).


3

Współczesna teoria odpowiedzi komputerowej brzmi: „źródło losowe jest źródłem losowym dla ulubionej klasy algorytmów”. Jest to utylitarna perspektywa: jeśli źródło przypadkowości wygląda jak prawdziwa przypadkowość dla wszystkich algorytmów, na których Ci zależy, nic innego się nie liczy. Możesz analizować swoje algorytmy, jakby otrzymywały naprawdę losowe rzuty monetami, a Twoja analiza da prawidłowe odpowiedzi.

ZAZA

  • wszystkie maszyny Turinga, które zawsze się zatrzymują
  • wszystkie rodziny obwodów wielomianowych
  • maszyny Turinga z wielomianowym czasem
  • wszystkie maszyny logistyczne Turinga

ZA(Xn)Xn{0,1}nϵZAZAZA

|Par[ZA(Xn)=1]-Par[ZA(Un)=1]|ϵ,
Un{0,1}n

Pomysł ten kryje się za każdym nowoczesnym formalnym pojęciem pseudolosowości.


2

Oto dwa kolejne centy.

Jednym ze sposobów myślenia o algorytmach losowych jest zobrazowanie ramki, która pobiera dane wejściowe, robi z nimi tajemnicze rzeczy i wytwarza pewne („nieprzewidywalne”) dane wyjściowe.

Zamiast tego pomocne może być myślenie o nich jako o deterministycznych algorytmach, które pobierają dwa dane wejściowe: „prawdziwy” sygnał wejściowy i niektóre „losowe” dane wejściowe, które otrzymujemy z funkcji takich jak Math.Random().

[0,1]nlogn

[0,1]nlogn

Jak wspominają Jonathan i Frafl, istnieją sposoby na sprawdzenie, czy przypadkowe źródło zachowuje się „losowo”. Ale wszystko, co zrobią, to wpływ na to, co wierzysz o przyszłe informacje pochodzące z tego losowego źródła. Jeśli uważasz, że każdy bit może być równy zero lub jeden, niezależnie od poprzednich bitów, to zgodnie z Twoją najlepszą wiedzą i przekonaniami, to źródło jest jednolicie i niezależnie losowe, a zatem, zgodnie z Twoją najlepszą wiedzą i przekonaniami, będzie działał szybko, będzie poprawny itp. To zresztą moje filozoficzne podejście.


-2

Nie możemy wygenerować liczb naprawdę losowych. Istnieją różne metody generowania liczb pseudolosowych przy użyciu określonego równania i określonej wartości początkowej. Tak więc losowa sekwencja liczb zależy od wartości początkowej. Po poznaniu wartości początkowej możemy przewidzieć, jaka będzie sekwencja. Oprócz tego istnieją inne metody generowania liczb losowych. Ludzie używają teraz niektórych metod do generowania prawdziwych liczb losowych, takich jak wykorzystanie czasu ruchu głowicy dysku i inne metody fizyczne, które można włączyć do komputera. Patrz: http://en.wikipedia.org/wiki/Random_number_generation#Generation_methods



-3

podaną metodą, tak jak powiedziałeś
Math.random () w Java
Randomize; Losowo (n); w Delfach

możesz zaimplementować własną strukturę i logikę do generowania liczb losowych, przy
czym taki „algorytm” może działać zgodnie z podanymi specyfikacjami w celu uzyskania lepszych wyników losowych.
i budować na tym logikę.

Dzięki.


2
Jak to odpowiada na pytanie: „skąd wiadomo, że sekwencja jest losowa”?
Juho

jak już powiedziałem. po prostu ... gdzie „losowy” może być postrzegany jako oszustwo, ale nie wpływa na jego losowy efekt. następnie uczyń go dumnym i zbuduj swoją logikę. Prosty.
Nick

-4

inne odpowiedzi są dobre, oto inne punkty widzenia na to bardzo ważne / mimowolnie głębokie pytanie. informatycy badają losowość od dziesięcioleci i prawdopodobnie nadal ją badają. ma wiele głębokich powiązań i przede wszystkim otwarte pytania pozostające w terenie. oto kilka wskazówek.

  • „prawdziwa / rzeczywista losowość” występuje w procesach fizycznych niskiego poziomu i „szumach”, takich jak diody Zenera, mechanika kwantowa itp., które można wykorzystać w sprzętowych RNG

  • inne liczby generowane w sferze komputerowej to tak zwane „pseudolosowe” które jest symulowane i nigdy nie może się równać z „prawdziwą przypadkowością”. są to tak zwane PRNG

  • istnieje ważne poczucie „twardości kryptograficznej generatorów liczb losowych”, które w pewnym sensie mierzy ich „jakość” lub „bezpieczeństwo”, patrz np. kryptograficznie bezpieczny PRNG . w zasadzie „słaby” generator nie ma tyle złożoności obliczeniowej, co „twardy” generator, a „słaby” generator jest łatwiejszy do złamania.

  • Innym dość pokrewnym poczuciem, jakie się pojawia, jest „twardość dowodów”. wyobraź sobie dowód na to, że RNG jest czasem liniowymO(n). dowód ten wydaje się prostszy niż wymagany do udowodnienia, że ​​jest kwadratowyO(n2))i tak dalej. koncepcja ta jest wciąż formalizowana / badana, ale w rzeczywistości wpływa na głębokie pytania, takie jak P.=?NP w słynnej pracy o nazwie Natural Proofs . z grubsza autorzy pokazują PDowód NP musi mieć pewną „złożoność”, w przeciwnym razie można zastosować tę samą technikę analizy, aby rozbić PRNG, a ponadto, co nieco zaskakujące, większość lub może wszystkie separacje / techniki klas złożoności znane w tym dniu (lub nawet później, do tej pory ) nie mają wystarczającej złożoności.

  • ważnym tematem badawczym w TCS są algorytmy randomizowane i derandomizowane . z grubsza chodzi o zbadanie, jak bardzo algorytm jest zmieniany przez zastąpienie „prawdziwej przypadkowości” PRNG, a na ten temat istnieją różne głębokie twierdzenia. oto wysoko postawione pytanie cstheory.se, które nadaje posmak badań w tej dziedzinie: wydajne i proste randomizowane algorytmy, w których determinizm jest trudny

  • innym kluczowym tematem związanym z TCS jest entropia informacji - pierwotnie wprowadzona w fizyce dawno temu - która bada ściśle powiązaną koncepcję „rozrzucenia informacji” i podobnie jak niektóre inne ważne pojęcia w (T) CS wydaje się być jedną z kluczowych idei, które przecinają granica między zastosowaną a teoretyczną analizą, nawet niektóre formuły są takie same .

  • ponownie potwierdzając status aktywnych badań, istnieją inne wysoko postawione pytania na cstheory.se, które dotyczą tego pytania. tutaj jest jeden blisko, prawie taki sam: jest naprawdę losowym generatorem liczb obliczalnym przez Turinga


I nie tylko informatycy są oczywiście zainteresowani „przypadkowością”. Jest to prawdopodobnie pytanie ponadczasowe, rozpatrywane również z perspektywy religijnej i filozoficznej.
Juho

zgodzili się, również w fizyce jest to kluczowa koncepcja przy wynalezieniu QM i debaty Bohr-Einstein , Bells thm , i nadal motywuje „teorie ukrytych zmiennych” ponownie aktywnym obszarem badań. więc, jak mówisz, być może nikt nie wie, co to jest, ale wielu wciąż pracuje nad znalezieniem bardziej ostatecznej odpowiedzi, gdy mówimy.
vzn

więcej na temat znaczenia losowości w stosunku do kąta P vs NP, ukazuje się w zadawalającym i klika „punkcie przejściowym”, np. jak w niniejszym artykule Monotoniczna złożoność k-kliki na losowych wykresach Rossmana
vzn

Re łamanie generatora liczb losowych zobaczyć ataku RNG , Wikipedia
vzn

przegląd losowości w CS napisany
vzn
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.