Czytam ten artykuł i nie mogę zrozumieć. Komputer działa na zasadzie poleceń, czyli wykonuje określone zadania. Taki generator liczb losowych każe mu wybrać dowolną liczbę z jakiegoś zestawu. Czyli wychodzi na to, że komputer musi sam podjąć decyzję. No i tego właśnie nie rozumiem. Jak to jest możliwe? W jaki sposób on to robi? Przecież komputer nie podejmuje decyzji. Czy mógłby mi ktoś to wytłumaczyć tak na chłopski rozum, bardzo prostymi słowami, można by rzec jak dziecku? :)
https://pl.wikipedia.org/wiki/Generator_liczb_losowych
To proste.
Określasz zestaw parametrów, względnie nieprzewidywalnych z których stosując określony algorytm komputer ma wyliczyć pseudolosową liczbę.
Najczęścieś stosuje się:
- zmienne czasu
- input z jakiś akcji użytkownika, najczęściej ruchu myszy ale nie tylko
- w grach, głównie turowych, często za źródlo robi historia naszych akcji np. historia ruchu naszych postaci po planszy
- inne inputy sprzętowe, jak np. zestawienie obecnego taktowania procesora, zużycia RAM, temperatur i kilku innych czynników
- oraz mieszaninę różnych, sam czas jest slabym ziarnem, ale zestawienie czasu z zużyciem pamięci aktualnym w bajtach już całkiem niezłym
Parametry wejściowe wpływające na wynik nazywamy ziarnem, w wypadku prosty algorytmów jest to pojedyncza wartość, w wypadku tych bardziej złożonych ich zestaw.
Drugim parametrem wejścioym w większosci algorytmów może być zakres jaki nas interesuje (są algorytmy sztywne jak i takie, którym możemy podać czy interesuje nas wynik 0-10 czy 0-10000)
Na tym ziarnie wykonuje się algorytm, który wylicza nam naszą pseudolosową wartość (jest to z reguly liczba z dużego zakresu, lub ciąg liczb) a potem operacją modulo (ale są też bardziej wyrafinowane w tym takie operujące na ciągach wartości) dostosowuje do wymaganego zakresu.
W rezultacie przy tym samym ziarnie dla tego zamego zakresu ten sam algorytm da zawsze ten sam wynik. Z tego powodu kluczem tutaj jest dobranie zmieniającego się ziarna (stąd czas lub zewnętrzny input).
Czy to oznacza, że znając kilka wyników łatwo jest przewidzieć następny rezultat? Nie. Zwłaszcza jeżeli zakres jest niski (jak np. wyniki w loteriach). Algorytmy losowe wykorzystywane tam gdzie nie chcemy by ktoś je rozgryzł mają z reguły wysoki poziom złożoności (np. są problemem NP-trudnym) przez co potrzeba naprawdę wiele wyników by móc przeprowadzić inżynierię wsteczną a i tak jeżeli ziarno jest bardziej złożone niż np. zmienna czasu to rozgryzienie go jest bardzo trudne. Metody softwarowe nie dają rady dopiero w wypadku zaawansowanej kryptografii gdzie ktoś może poświęcić olbrzymie zasoby na łmanie algorytmu oraz gdy korzystamy z niego bardzo często generując olbrzymią liczbę próbki do wstecznej inżynierii.
PRzyklad masz w niektorych grach turowych (Ciwilizacja chyba od cześci czwartej czy X-kom) gdzie w ustawieniach mozesz określić czy ziarno ma byc wybrane z góry na rozgrywkę, czy za każdym razem po wczytaniu gry. Jak będzie z góry to powtarzanie tej samej akcji zaraz po wczytaniu gry da za każdym razem ten sam efekt, jak zmienne to efekty będą różne. W pierwszym wypadku by zmienic efekt, trzeba najpierw wykonać inne akcje, które w jakiś sposób zmienią inne parametry wejściowe algorytmu (np. odległość od celu wpływająca na interpretację wyniku losowania, wynik losowania będzie ten sam ale zostanie inaczej zinterpretowany).
Najlepiej można to sprawdzić właśnie w nowych X-COMach. Wczytywanie gry nic nie daje, bo ziarno opierane jest właśnie na wcześniejszych ruchach gracza. Wczytywanie gry i wykonanie tych samych akcji da zawsze da ten sam wynik, np. pudło.
Czyli liczba losowa tak naprawde nie jest losowa? Czy w taki sposób można np. organizować loterie gier losowych bez zezwolenia lub koncesji na gry losowe i hazardowe?
Dopóki istnieją prawa fizyki to nic nie jest losowe, bo jest ciąg przyczynowo-skutkowy.
Inną sprawą jest generowanie losowych liczb. Tutaj już zależy od tego jak skomplikowany jest algorytm.
Przykładem takiego algorytmu byłby taki który bierze czas w danym dniu, liczony w milisekundach (86 400 000 milisekund) i mnożenie obecnego czasu x-nej milisekundy w danym dniu, razy dzień miesiąca, razy miesiąc w roku.
W ten sposób masz liczbę która "losuje się" co milisekundę (jedną tysięczną sekundy). Czy jest to w losowe? Nie, bo można przewidzieć że w xnej sekundzie x dnia x miesiąca wyjdzie taka a nie inna liczba. Choć w praktyce tylko inny algorytm mógłby to wykorzystać. I to tylko jeden przykład budowy generatora liczb losowych. Developerzy biorą różne czynniki, nie tylko czas, ale też pozycje, koordynaty, stany maszyn, procesorów, grafik, pozycje myszki i tak dalej. Im więcej źródeł zmienności tym trudniejszy do przewidzenia wyniik.
Tylko czy fizycy kwantowi zgodzą się z twoim pierwszym zdaniem o braku losowości. Raczej nie.
Jeśli mówisz o lotto i innych tego typu kulkowych zabawach, to sprawa jest prosta.
Nigdy nic nie jest dokładnie takie same. Warunki się zmieniają, struktura mechanizmu się zmienia, materiał się męczy, kształt elementów się zmienia od uderzeń. Różne temperatury, różne oddziaływanie grawitacji, siła z jaką elementy wypadają... najmniejsze czynniki sprawiają że pojawia się losowość. Gdybyś zrobił symulację lotto na komputerze, tylko wtedy dostał byś za każdym razem taki sam wynik.
Dziękuję Ci serdecznie. Co prawda nie jest to dla mnie zbyt prosty język ale jakąś tam część zrozumiałem i to w sumie mi wystarczy. Najlepszy ten przykład z ruchami myszki. To do mnie najbardziej przemówiło, nie wpadłbym na coś takiego. Ale to też pokazuje jak ludzie różnią się inteligencją i zdolnościami umysłowymi. Jeśli sam napisałeś ten tekst w odpowiedzi do mnie to naprawdę ogromny szacunek. Twoje IQ w porównaniu z moim jest ogromne. Podziwiam takich ludzi.
Tylko pamiętajcie, że problem generacji prawdziwych liczb losowych pozostaje nierozwiązaną zagadką w informatyce do dziś.
Ależ jest rozwiązany, starczy niedeterministyczne wejście możliwie jak tylko się da. A że masę zawartości internetu generują ludzie, którzy nie są w pełni przewidywalni to można wykorzystać nas input jako źródło.
I tak, wiem że użytkownikami się w pewien sposób kieruje (choćby materiał w TvGry o sterowaniu graczem) ale odchyły są na tyle duże, że jest to wystarczające.
Inną ciekawostką jaką widziałem była obserwacja stanów kwantowych w odniesieniu do elektronów, które według naszej obecnej wiedzy są niedeterministyczne (chodzi o to, że jest to w zasadzie chmura prawdopodobieństwa w nie konkretny stan do momentu obserwacji).
Tylko fakt, mamy tutaj masło maślane, bo wykorzystujemy input losowych liczb do wygenerowania losowej liczby ;P
https://pl.wikipedia.org/wiki/Chaos_(matematyka)
Polecam też bloga prof Kierula:
Odwzorowaniem logistycznym można pobawić się nawet w arkuszu kalulacyjnym, używając różnych seedów r, zgodnie z opisem z powyższego artykułu w celu uzyskania liczb pseudolosowych. Tu masz linka, co prawda bez publicznych uprawnień, ale można sobie ten wzór przepisać do innego arkusza i pociągnąć formułę w dół kolumny
Mam jeszcze prośbę do Ciebie. Wytłumacz mi jak działa Lotto. Jest sobie ta maszyna i przed losowaniem te kule są w jakiś sposób ułożone. Maszyna kręci ileś sekund tym bębnem i masz wynik. Czyli teoretycznie wszystko według praw fizyki, powtarzalnie, przewidywalnie. Gdzie jest losowość w takiej sytuacji? Na czym to bazuje?
Nie wiem jak teraz, bo nie śledzę, ale kiedyś działało to na zasadzie wpuszczenie sprężonego powietrza o zmiennym natężeniu, może tez i kierunku (tego nie jestem pewien) w bęben i zasysania podciśnieniem.
Jest to proces jak najbardziej deterministyczny, nie jest to prawdziwa losowość, jednak o tak skrajnie złożonej strukturze, że nie jesteśmy w stanie przewidzieć wyników w żaden sposób. Teoretycznie można by zasymulować taki proces, jednak trzeba by znać wszystkie parametry wejściowe, od siły dmuchającego powietrza, czas, pozostałe drobne siły oddziaływujące na układ, temperaturę powietrza, ciśnienie atmosferyczne, naprężenia na kulach w momencie zwolnienia blokady (mogą się różnić zależnie od przechylenia), czas itd.
A i tak pewnie byłaby to robota dla superkomputera na tygodnie.
Laik widzi to co napisałeś, niestety na wynik wpływa jeszcze sporo zmiennych. Weź pod uwagę temperaturę powietrza, ciśnienie atmosferyczne, ciśnienie i wydajność dmuchawy wprawiającej kule w ruch, wagę kul, różnice tychże kul, bo identyczne co do atomu nie będą, powierzchnia kul ma znaczenie, jak tarcie wpływa na odbijanie się kul itd. Można wymieniać jeszcze bardzo długo, tak więc zakładając że kule są naprawdę bardzo mocno zbliżone do siebie wagą można spokojnie mówić o pełnej losowości.
Tak to jest jak się pisze post 20 minut :) ktoś cie wyprzedzi :)
A czy na pewno te wszystkie lotto nie są ustawione? Pewnie jakieś sposoby mają, żeby wylosować te kuleczk, nawet w kolejności.
https://www.youtube.com/watch?v=PAi_35BFbn0
Albo losowania w Bułgarii - 6 i 10 września 2009 wylosowano tam takie same liczby ;)
oo, w PL tez jest ciekawy przypadek :) https://www.youtube.com/watch?time_continue=38&v=WfSWNSn8SKQ&feature=emb_title
Ależ oczywiście, że można to oszukać, starczy wpakować w te kule które chcemy wylosować kawałki metalu i zamiast podciśnieniem wyciągać kule elektromagnesem.
Można też, ale to dużo trudniejsze, zamiast zasysać kule ciągle lub losowo robić to w momencie gdy pożądana kula jest w zasięgu.
Jednak mówimy tutaj o jawnych oszustwach, zmieniających układ a nie o przewidywaniu wyników w uczciwym układzie.
Panowie dzięki za odpowiedzi. Teraz już rozumiem. A to sprężone powietrze które jest wpuszczane o zmiennym natężeniu, rozumiem że o tym jaka to będzie wartość decyduje jakiś program komputerowy, który działa mniej więcej tak jak opisałeś w poście nr. 2?
OMFG Budowa takiej maszyny jest prosta, to co opisujesz to jakiś koszmar :P Masz pojemnik w który wtłacza się powietrze, pewnie za pomocą dmuchawy, powietrze tworzy wiry powietrza w których latają kule. Pojemnik jest tak zaprojektowany że przy włączonej dmuchawie panuje tam nadciśnienie i w momencie otwarcia "kanału losowania" nadciśnienie to wypycha kule najbliższą wylotowi. Taką maszynę można ustawić, a chyba najprościej za pomocą zjawiska elektromagnetyzmu odpowiednia konstrukcja kul + kanał wychwytujący, pewnie da się w 100% ustawić wynik, a czy to robią ciężko stwierdzić.
Raczej nie może być ustawione bo jest jakaś komisja która to nadzoruje. Ale w tym kraju to nie wiadomo :)
Podałbyś do siebie kontakt, bo chciałbym o parę rzeczy dopytać na priv?