Skocz do zawartości

ParadoksPydiego


Frankot

Rekomendowane odpowiedzi

Jeśli nie spotkaliście się wcześniej z ParadoksemPydiego, a chcecie się dowiedzieć co to jest i jak to rozwiązać zapraszam do lektury poniższego wątku.

 

Jak nie wiadomo o co chodzi to chodzi o pieniądze, a raczej totolotek :) Kiedyś podczas zażywaniu z kolegą ekstraktu chmielowego wywiązała się rozmowa na temat totolotka. Zasada jest taka, że teoretycznie losując 6 liczb z 49 prawdopodobieństwo wylosowania każdej kombinacji jest takie same.

 

Dlatego też kolega kreśli kupon w każdą większą kumulację i obstawia następujące liczby: 1, 2, 3, 4, 5, 6. Twierdząc, że prawdopodobieństwo ich padnięcia jest równe każdemu innemu.

 

Biorąc po uwagę statystykę to prawdopodobieństwo to wynosi 1 na 13.983.816 (o ile podstawiłem do dobrego wzoru). Jednak ja sądzę, a statystyki ani matematyki nie studiuję, że w przypadku ciągu i to ciągu granicznego dochodzą jeszcze inne prawa statystyki. Wskutek czego prawdopodobieństwo padnięcia tych liczb jest mniejsze.

 

Dlatego też napisałem program ParadoksPydiego, a że programista ze mnie żaden i jest on trochę wolny (1500 losowań na sekundę), zachęcam do testowania ParadoksuPydiego razem ze mną. Może uda się go potwierdzić lub definitywnie obalić.

 

Program ten nie jest doskonały i ma pewne błędy, gdyż nie znam się na programowaniu, ale ogólnie działa dobrze.

 

Jeśli jesteś zainteresowany możesz go pobrać tu.

 

Jak najszybciej postaram się go udoskonalić i poprawić. Muszę poczytać więcej o delphi :)

 

Znane problemy:

- Przy obliczaniu ilości wylosowanych zadanych liczb nie uwzględnia błędnych losowań to znaczy kiedy inne liczby niż 1, 2, 3, 4, 5, 6 uległy powtórzeniu. Licznik losowań to uwzględnia.

- Licznik losowań liczy losowania w których wypadło 0, używam opcji 'random' a on losuje też zero.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 10
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Popular Days

Top Posters In This Topic

jezeli o mnie chodzi to uwazam ze kazde prawdopodobienstwo opiera sie na uproszczeniu losowania do czystej matematyki a to uproszczenie nie bierze poza liczbami zadnych innych czynnikow, takich jak roznice w wadze kulek(minimalne) ruchy powietrza itp bzdety.

w zwiazku z powyzszym, skoro samo prawdopodobienstow jest juz uproszczeniem, proponuje je jeszcze bardziej uproscic, do modelu 0 1, czyli skreslajac liczby zgodnie z zasadami totolotka prawdopodobienstwo tego ze wygrasz jest jak jeden do 2... czyli albo wygrasz albo nie. :) pozdro, dla matematykuf wszelakich.

Odnośnik do komentarza
Udostępnij na innych stronach

jesli maszyna losujaca jest odpowiednio dobra i da sie jej

dzialanie przedstawic w klasycznym modelu prawdopodobienstwa

to nie masz na co liczyc. Losowania 6 liczb z 49 w totolotku

sa zdarzeniami niezaleznymi, maszyna zapewne jest tak skonstruowana

aby prawdopodobienstwo wylosowania kazdej z kul bylo nierozroznialnie

jednakowe. W ogole to co mowisz nie mialoby sensu... wez sobie dowolna

permutacje zbioru liczb 1..49. np. teraz przemaluj kulke 1 z 17, 2 z 23, 3 z

34, 4 z 22 ,5 z 31 i 6 z 13 i co? nagle wynik 17, 23, 34, 22, 31, 13 mialby

byc jakos mniej prawdopodobny ? A moze zamiast liczb losuj rozne kwiatki

(bratek, fiolek, gozdzik...) co to znaczy, przypadek graniczny? zdarzenia

elementarne sa rozroznialne i tyle wystarczy... to ze sie nazywaja 1,2,3...

49 to juz nic nie zmienia. nie chce zabrzmiec sztampowo ale wez poczytaj

o rachunku prawdopodobienstwa, albo zapytaj tego kolege ktory obstawia

1,2,3,4,5,6 bo chyba cos wiecej kapuje. Jedyne co mozesz udowodnic

losujac te miliony razy na komputerze to to ze masz slaby generator liczb

pseudolosowych.

Odnośnik do komentarza
Udostępnij na innych stronach

Czytałem o rachunku prawdopodobieństwa, ale mimo tego wydaje mi się to dziwne.

 

Z otrzymanej statystyki widziałem, że na te 30.000.000 losowań ok. 700 razy padało 5 z zadanych liczb, ale 6 się jeszcze nie trafiło.

 

Program już udoskonaliłem klik źródło.

 

Wywaliłem statystykę, bo i tak przekłamywała.

Odnośnik do komentarza
Udostępnij na innych stronach

Źródła już naprawione.

 

Liczby generuję za pomocą komendy "random".

 

np.

liczba1 := random(49) + 1; // +1 jest dlatego, że opcja random może wylosować też 0, a w totolotku zero nie jest losowane. Dla wartości (49) + 1, losuje liczby od 1 - 49.

 

Tak jest w kodzie. Jeśli istnieje jakiś lepszy sposób dajcie znać.

Odnośnik do komentarza
Udostępnij na innych stronach

OMG :D

Ile linijek kodu :D

Zamiast tworzyć sześć zmiennych liczba1,2,3,4,5,6 lepiej utworzyć tablicę sześcioelementową.

Wtedy w pętli możesz sobie porównać wszystkie ze wszystkimi łatwo i przyjemnie w dwóch linijkach kodu :) Podobnie z tymi warunkami.

 

 

Nie znam dokładnie Pascala, ale będzie coś mniej więcej tak:

var
i,a: integer;                          //iteratory pętli
liczba : array[1..6] of integer;   //zamiast sześciu zmiennych, tablica
...
...
randomize;
for i:=0 to 5 do
   liczba[i]:= random(49) + 1;          //losowe wrtości do elementów tablicy

for i:=0 to 5 do                        //porówanie wylosowanych liczb ze sobą
  for a:=i+1 to 5 do
     if liczba[i] = liczba[a] then
         test:= test - 1;

//podobnie porównujesz te warnuki poniżej -  w zagnieżdżonych pętlach

BTW funkcja random chyba nie jest idealna do takich losowań...

Odnośnik do komentarza
Udostępnij na innych stronach

polecam zrobienie liczb losowanych tez w tablicy, tak jak warunek, wtedy duzo tych sprawdzen mozna przerzucic do petli i mocno to skrocic.

 

nie programuje w delphi takze niestety nie podam ci kodu :(

 

edit: widze ze piotrek juz to napisal ;p

 

edit2: poniewaz nieprawidlowe jest wylosowanie dwoch takich samych liczb to przy sprawdzaniu czy cos takiego sie zdarzylo wyskakuj poleceniem continue z petli zamiast sprawdzac wszystko, powinno to przyspieszyc dzialanie programu

Odnośnik do komentarza
Udostępnij na innych stronach

Dzięki jak skończe dzisiaj "Chemiczne problemy ekologii" to postaram się to przetestować.

 

Jak już pisałem nie znam się na programowaniu, jedynie wczoraj trochę o tym poczytałem i udało mi się skonstruować program, który działał.

 

Tę jedną tablicę wprowadziłem do kodu dzisiaj, zaraz gdy przeczytałem, że tak można :D

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności