 |
Ten wątek jest przedawniony Działy Forum » Nauka
| Napisano | Autor | Tytuł | | 21-06-2012 15:57 | Hetman Twardowski (482 punktów) (zablokowany) | losowe serie
1 na 1 | Takie pozornie proste zadane. Mamy ciąg binarny losowych zdarzeń: sukces z prawdopodobieństwem p i porażka q = 1-p.
Dla p = 1/2 może to być zwyczajna seria rzutów monetą typu: 10111001110001010100011111... i 1 - orzeł, 0 - reszka.
Zadanie polega na obliczeniu ile prób/rzutów należy wykonać (średnio), aby otrzymać serię sukcesów długości k, np. k = 8 oznacza 8 orłów z rzędu?
I chyba jeszcze trudniejszy problem: mamy n prób, powiedzmy n = milion; ile tu będzie (średnio) serii sukcesów o długości k (=1,2,3... n), oraz jaka będzie najczęściej się pojawiać (pewnie to zależy tylko od p)?
Serie liczymy tylko raz, znaczy musi ona być ograniczona, np. 011110, i tu jest dokładnie seria sukcesów długości 4; nie ma tu serii długości 3, ani dwóch długości 2 (wówczas musiałoby np. tak być: 0110110).
| Autor wątku ma uprawnienia do usuwania wypowiedzi, jeżeli łamią regulamin Forum lub znacznie odbiegają od tematu.
1 na 1 | sceptymucha (moderator, 11470 punktów) | Rozkład Bernoulliego z p= 1/2 ^ 8, pl.wikipedia.org/wiki/Rozkład_dwumianowyOczekiwana = n*p Drugie póxniej. Pozdrawiam
Człowiek zawsze znajdzie coś nowego w obcym języku. Dziś poznałem nowe pojęcie: "Negative IQ"
|
|
 | Hetman Twardowski (482 punktów) (zablokowany) | |
|
|  | ekologik (1240 punktów) (zablokowany) | n jest tu zbędne. Odpowiedź już została udzielona tylko nie "dokończona". zadanie logicznie równoważne jest zadaniu, że wielu ludzi chce od razu uzyskać 8 sukcesów. zatem skoro szansa na sukces od razu wynosi oczywiście p^8 [example: szansa dwóch orłów = 1/2*1/2 = 1/4]
to najbardziej prawdopodobne jest że uda się to jednemu na 1/ (p^8) z nich zatem średnio trzeba "zaczynać od nowa" 1/(p^8) razy
{w swoim ciągu potencjalnych zer i jedynek czyli - niejako - "życiu/póbowaniu"}
czyli rzucać trzeba (aby jeszcze ukończyć ostatni 8 element)
(1/(p^8) ) + (8 - 1)
za 8 oczywiście można podstawić w tych wzorach k. Pozdrawiam
|
|
| |  | 1 na 1 Hetman Twardowski (482 punktów) (zablokowany) | >n jest tu zbędne. >Odpowiedź już została udzielona tylko nie "dokończona". >zadanie logicznie równoważne jest zadaniu, że wielu ludzi chce od razu uzyskać 8 sukcesów. >zatem skoro szansa na sukces od razu wynosi oczywiście p^8 >[example: szansa dwóch orłów = 1/2*1/2 = 1/4] >to najbardziej prawdopodobne jest że uda się to jednemu na 1/ (p^8) z nich >zatem średnio trzeba "zaczynać od nowa" 1/(p^8) razy >{w swoim ciągu potencjalnych zer i jedynek czyli - niejako - "życiu/póbowaniu"} >czyli rzucać trzeba (aby jeszcze ukończyć ostatni 8 element) >(1/(p^8) ) + (8 - 1) >za 8 oczywiście można podstawić w tych wzorach k.
Prawie, ale to tylko takie zgadywanie: szansa czegoś wynosi p, więc średnio 1 przypadek na n = 1/p prób.
Ale tu wychodzi prawie 2 razy więcej, czyli w tym przypadku żeby uzyskać serię 8 orłów musisz rzucać aż prawie 2^9 = 512 razy.
Dokładny wzór na średnią liczbę prób aż do uzyskania serii k sukcesów jest chyba taki: n = (1-p^k)/(1-p) * 1/p^k
wstawiając p = 1/2 i k = 8, otrzymamy: n = (1-1/256)/(1-1/2) * 256 = 510
jeszcze sprawdźmy przypadek z większą szansą, np.: p = 3/4: n = (1 - (3/4)^8/(1-3/4) * 1/(3/4)^8 = 36, znacznie mniej prób
Ciekawe czy z tego wzoru dobrze wyjdzie dla p =~ 1. lim_(p->1) (1-p^k)/(1-p) * 1/p^k
to powinno być równe dokładnie k.
|
|
| | |  | ekologik (1240 punktów) (zablokowany) | >Ale tu wychodzi prawie 2 razy więcej, czyli w tym przypadku żeby uzyskać serię 8 orłów musisz rzucać aż prawie 2^9 = 512 razy.
> n = (1-p^k)/(1-p) * 1/p^k
a skąd wiesz, że dobry ?
|
|
| | | |  | Hetman Twardowski (482 punktów) (zablokowany) | >> n = (1-p^k)/(1-p) * 1/p^k >a skąd wiesz, że dobry ?
Może prawie dobry.
Liczysz kolejne możliwe pozycje tej naszej serii k sukcesów, zaczynając od 0.
0. możemy od razu wyrzucić k orłów, szansa p^k i liczba prób n = k; 1. pierwsza reszka a potem k orłów: qp^k, n = k+1. 2. tu mamy dwie możliwe kombinacje: 00 lub 10, czyli szansa: q^2 + pq = q(q+p) = q; dalej k orłów, co daje razem znowu: qp^k, dla n = k+2 3. tu zaczynamy od: xx0, x - cokolwiek, zatem znowu qp^k
Ale teraz można już zauważyć, że dla k = 2 te xx może być przecież 11, czyli finał, a tym bardziej dla k = 1 i nawet już w punkcie 1.
No, mówiłem że to tylko pozornie wydaje się łatwe - trzeba powalczyć.
|
|
| | | | |  | ekologik (1240 punktów) (zablokowany) | Intuicja chyba mnie zawiodła. Moje zadanie zastepcze mogło nie być zjawiskiem tak calkiem równoważnym. Skąd wiem? A bo po prostu kazałem kompowi rzucac wiele (30 mln) serii (nie dłuzszych niz 10mln rzutow - ale ani razu nie zaszla potrzeba 10 mln  - chyba nie dziwi  ) Za kazdym razem (od nowa exe-kwując) wychodzi prawie dokładnie 510  No no ... brawo Hetmanie ! pozdrawiam p.s. Kurczątko blade ... ale ten edytor dosuwa to bez sensu Tak symuluję: Randomize() ; n := 0 ; sumlen := 0 ; while n < 30000000 do begin n := n + 1 ; len := (0 - 1) ; i := 0 ; hited := 0 ; while i < 10000000 do begin {rzucamy 10 mln razy chyba ze wczesniej 8 sztuk} i := i + 1 ; if Random(1000) < 500 then begin hited := hited + 1 ; if hited = 8 then begin len := i ; break ; end ; end else hited := 0 ; {reszka} end ; if len > 0 then sumlen := sumlen + len else begin sumlen := sumlen + 10000000 + 1 ; { ten ultrapechowy przypadek nie zaszedl - sprawdzilem} end ; end ; showmessage(floattostr(sumlen/n))
|
|
| | | | | |  | 1 na 1 Hetman Twardowski (482 punktów) (zablokowany) | Może tak wystarczy:
for n := 1 to N_RUNS do // N_RUNS = 10000 powinno wystarczyć begin
..run = 0; len := 0;
..while run < k do begin // k - długość szukanych serii
.... if Random(1000) < 500 then inc(run) // aktualna długość serii .... else run := 0;
....inc(len); // liczba prób
.. end;
..inc(sumlen, len);
end;
|
|
| | | | | | |  | ekologik (1240 punktów) (zablokowany) | > Może tak wystarczy:Super! Jak najbardziej. To jest ten sam algorytm tylko omija ograniczenie jakby 10mln rzutów zabrakło. Wynik rzecz jasna ten sam 510 razy dla 8 orłow. Ciekawsze jest że dla 2 orłów wyznacza on średnią ilosc na aż 6 rzutów (a nie 5 jak naiwnie wierzyłem 4+(2-1)=5). To mozna by nawet kompem sprawdzić prawie dokladnie metodą "siłową" 30 petli w petli - ale nie o 2 w nocy  Pozdrawiam p.s. Tak praktycznie to pisze sie while zamiast for zeby mozna bylo z czasem przejsc na licznik wielomiliardowy czyli int64 (A limit 10 mln wprowadzilem zeby nie musiec zabijac procesów jakby cos poszło za dluuuugo  ) radze nie uzywac słów typu "run" licho nie śpi ! Twój kod plus efekt załaczam [Załącznik][Załącznik]
|
|
| | | | | | |  | ekologik (1240 punktów) (zablokowany) | Nasz symulacyjny algorytm potwierdzil się! Jest OK! Odpaliłem rozwiązanie "siłowe" opisane wczoraj czyli sprawdzilem programowo wszyskie możliwe ciągi zerojedynkowe do 25 pozycji (załączniki z programem) i wyszło ze dla k=2 orły pod rzad trzeba rzucać średnio dokładnie 6 razy {na ekranie widzisz ...=5.98 ale to dlatego że przypadek bez sukcesu w 25 rzutach - bardzo rzadki - łaskawie potraktowałem jako sukces w 27 rzutach. Ten sam wynik daje nasza symulacja (dla kilkudziesieci mln serii) też 6 razy! Tego obrazka nie załączam ale możesz sam sprawdzić pod byle jakim Pascalem. To uwiarygadnia wynik 510 dla 8 orłów. Nie trzeba Ci szukać wyniku w "Matematyce Konkretnej" tylko sposobu dojścia  Wynik 510 otrzymałem też uzywając dziś losowania z ułamków od 0 do 1 i odwracając znak (w stosunku do wczorajszego) żeby odfiltrować potencjalne niuanse jak precyzyjnie dziala funkcja pseudolosowa RANDOM. I tym razem aż 40 mln serii. {kod dopisałem na dole w załaczniku - pod kodem siłowego rozwiązania} [Załącznik][Załącznik]
|
|
| | | | | | | |  | Hetman Twardowski (482 punktów) (zablokowany) | > Nasz symulacyjny algorytm potwierdzil się! Jest OK!Ale chyba sprawdzałeś tylko p = 1/2. Ciekawe co tu wyjdzie, gdy zamiast serii orłów będziemy łapać dowolną serię, czyli orłów lub reszek. Pewne trochę się skróci ta średnia liczba prób, których teraz mamy n = 510 dla k = 8, ale ciekawe o ile? > Wynik 510 otrzymałem też uzywając dziś losowania z ułamków od 0 do 1 i odwracając znak> (w stosunku do wczorajszego) żeby odfiltrować potencjalne niuanse jak precyzyjnie dziala funkcja pseudolosowa RANDOM. I tym razem aż 40 mln serii.Ten standardowy rand jest raczej marnym generatorem, lepiej używać innego, zwłaszcza w symulacjach procesów fizycznych. --- Możesz od razu sprawdzić drugie zadanie: ile poszczególnych serii pojawia się w ciągu prób długości n, np. n = 1 tyś., 10tyś, 100 tyś, 1 milion. Cytat:runs[0..255] = 0; // tablica wystąpień runów długości: k = 1,2,3, ... 254
s := 0; n := 1000000;
while n .> 0 do begin
..dec(n);
..if random(1000) < 500 ) inc(s) ..else begin
....if( s .> 254 ) s = 255; // zbyt długie posumujemy sobie wszystkie razem ....inc(runs[s]);
....s := 0;
..end;
end;
out(runs);
|
|
| | | | | | | | |  | ekologik (1240 punktów) (zablokowany) | > >Nasz symulacyjny algorytm potwierdzil się! Jest OK!> Ale chyba sprawdzałeś tylko p = 1/2.a jakie to ma znaczenie, równie dobrze można tam napisać < (1/3) Wyniki (jakich oczekujesz) wypada potem ładnie opracować i zaprezentować, a może i skonkludować. A to Twój wątek  To może zdobądź jeden z wielu darmowych kompilatorow Pascala albo Delphi i pobaw sie własnoręcznie. Jak Ci zmienne integer nie wyrobią to użyj float. Uważam, że ten podwątek (software na usługach rachunku prawdopodobieństwa zwz seriami) można spokojnie Ci zostawić bo ładnie czaisz. Pozdrawiam p.s. Ten Random (w Delphi) bez nawiasów (bo bez parametru) zwraca jakiś ułamek (0..1) i jednak czyni to solidnie losowo skoro dał bezsprzecznie poprawny rezultat dla 40 mln serii na rzecz dwóch orłów. Nieomal dokładnie 6.
|
|
| | | | | | | | | |  | 1 na 1 Hetman Twardowski (482 punktów) (zablokowany) | >To może zdobądź jeden z wielu darmowych kompilatorow Pascala albo Delphi >i pobaw sie własnoręcznie.
Mam Delphi a nawet starego Turbo Paskala 7, ale używam tylko c++ - tu są znacznie większe możliwości.
>Ten Random (w Delphi) bez nawiasów (bo bez parametru) zwraca jakiś ułamek (0..1) >i jednak czyni to solidnie losowo skoro dał bezsprzecznie poprawny rezultat dla 40 mln serii na rzecz dwóch orłów. >Nieomal dokładnie 6.
W przypadku jednowymiarowych rozkładów jeszcze ujdzie, ale w wielowymiarowych szybko się ujawniają wady tego generatora.
Zresztą on jest chyba również znacznie wolniejszy od innych generatorów (nowszych), ponieważ jest oparty na dzieleniu, a ta operacja trwa tyle co z 20 innych operacji - dodawań, mnożeń, itp.
|
|
|  | | sceptymucha (moderator, 11470 punktów) | Nie załapałeś. p jest zmienną w rozkladzie i ja wyliczyłem je dla pewnego przypadku - ciągu co najmniej ośmiu jedynek. Mając p liczymy z rozkładu, dokładniej z wartości oczekiwanej z jaką pewnością mamy dostać nasz wynik - wtedy wychodzi nam n. Z n możemy wyliczyć ile razy losujemy - na przykład, jeśli n wyszło 10, to mamy baza 1 (bazowo musi być osiem losowań dla danego przypadku) + 9 = 8+9 = 17. Z podpunktem drugim jest taki problem, że jeśli baza (trafienie, szukany rozkład 01) pojawi się w pierwszych losowaniach, to odcina on początkowe losowania i trzeba jakoś to majstrować. Jakby ostatnie losowanie robiło kółko do pierwszego byłoby łatwiej.
Jak coś to opiszę dokładniej.
Pozdrawiam
Człowiek zawsze znajdzie coś nowego w obcym języku. Dziś poznałem nowe pojęcie: "Negative IQ"
|
|
| |  | 1 na 1 ekologik (1240 punktów) (zablokowany) | chciałem być skromny ale trudno  Moje rozumowanie nie jest (jak widzę) kontynuacją Twojego zamysłu, którego się takim spodziewałem. Przyjmij zatem, że jest odrębnym podejściem do tego zadania. Mój wynik będzie OK. Liczenie wartości oczekiwanej (albo średniej liczby prób) można zawsze oprzeć na zadaniu równoważnym oraz znajdowaniu "najbardziej typowego" rezultatu. Co innego z odchyleniami ! Tu nie ma tak prosto. Pozdrawiam p.s. żeby nie był zamieszania - ja rozwiązałem tylko to (poniższe) zadanie dla dowolnego p i k : Dla p = 1/2 może to być zwyczajna seria rzutów monetą typu: 10111001110001010100011111... i 1 - orzeł, 0 - reszka.
Zadanie polega na obliczeniu ile prób/rzutów należy wykonać (średnio), aby otrzymać serię sukcesów długości k, np. k = 8 oznacza 8 orłów z rzędu?
|
|
2 na 2 | grg74 (190 punktów) | w sumie nie mam pojęcia o prawdopodobieństwie , albo oceniam je intuicyjnie ( w rzucie monetą sprawa prosta jak drut) albo..... stosuje metodę Monte Carlo , czyli pisze program który generuje rozpatrywany przypadek n razy i mam czarno na białym jakie jest prawdopodobieństwo . Kiedyś np. zachwyciła mnie reklama gry w Lotto, zdaje sie ze multilotek ( ta z Napoleonem co wielkim strategiem był) i zamiast przewalać encyklopedie matematyczne szybko sie przekonałem "grając" setki milionów razy ze za każdą zainwestowaną złotówkę otrzymam 85groszy
|
|
 | 2 na 2 ekologik (1240 punktów) (zablokowany) | Jak zwał tak zwał. Rozumiem, że sprawdzasz wszystkie kombinacje, a zliczasz wszystkie oraz korzystne. Czyli - iterując na kolejnych pozycjach (poprzednia chwilowo ustalona dla następnej itd) Też się tak bawiłem kompem i wynik (dla dużego lotka był korrekt == 1/13mln). ____________________ przy okazji bieganie po każde 5 zł (za 3-kę) w duże lotto to też wysiłek! dlatego ekonomiczniej jest grać w mini (5 z 42) a swoje szanse można zwiększyć (nie na częstość; ale na trafienie na lepszą wysokość wygranej - jak już trafimy) analizując jak grają Polacy i grajac na nietypowy "układ" czyli porzeciwko nim. Bo w mini nawet kasa za trójki jest dzielona na ludzi co trafili i jak mniej trafiło to masz więcej. kiedyś pozbierałem setki wników i (bazując) wyczaiłem skłonności ludzkie (polskie) i potem zawsze jak trafialem 3-kę to akurta była to jedna z najwyżej płaconych 3-ek w roku. ________________________________________________________ sorry ale wyników anlizy nie ujawnię nawet na Priva bo nadal gram oczywiście tylko na jeden zakładzik ale za to na 10 tygodni bo chodzenie do punktu też jest stratą czasu=pieniedzy; wiec po co 10 razy  Pozdrawiam p.s. jeden aspekt ujawnię bo już jest nieaktualny Kiedyś skreślało się 5 z 42 ale na szachownicy dużego (1..49) wiec trzeba było uważać żeby nie skreślić np 43 i ludzie ostrożni, niedowidzący, itp unikali ostatnich liczb  Dziś niestety tabelka na mini jest osobna i ten chwyt nie działa  Najwiekszym moim worgiem jest dziś system na chybił trafił (bo z tymi co go stosują nie wygram - na szczeście większość ma się za "mądrzejszych"  )
|
|
|  | | grg74 (190 punktów) | intuicyjnie wyczuwam że w lotka nie idzie systemowo wygrywać , tak jak w ruletke zresztą , może sie poszczęść raz czy dwa, ale na dłuższą metę działa statystyka , a z nią się ciężko kopać .... no ale każdy ma swoje jazdy. Ja np. wykorzystuje tę metodę do mówiąc w skrócie określenia prawdopodobieństwa zwyżki lub spadku kursu na giełdzie ( w tym przypadku już żadne wzorki matematyczne nie pomagają) no i też spotykam sie z sceptycyzmem .... no ale ... zdaje się że w XVI... XVIIw grupka Holendrów wpadła na pomysł żeby ubezpieczać fracht .... i jak znam życie pewnie też mieli opinie szaleńców
|
|
| |  | ekologik (1240 punktów) (zablokowany) | > intuicyjnie wyczuwam że w lotka nie idzie systemowo wygrywaćI dlatego ja tego nie proponowałem. Proponowałem system rozpoznawania preferencji graczy, uczestniczacych we wspólnym podziale pieniędzy (im mniej trafiło tym więcej dla nas). Prosty przykład. Jakby większość polaków skreślała cyfrę 7 to zdecydowanie warto by było akurat 7-ki nie skreślać. Czyli wartość oczekiwana naszej wygranej rośnie w takim przypadku. Gra w duże lotto jest błędem nie tylko ze względu na częstsze bieganie po znikomą kasę {trójka w małe lotto jest znacznie rzadsza ale za to wyżej płatna, i już zależna od liczby tarfień w polsce} ale ze wzgledu na zbyt wielką główna wygraną (kosztem szansy na nią !!!). Co z tego, że wartość oczekiwana podbna jak TAKA wygrana to aż tak dużo wiekszej radości nie sprawi niż główna wygrana w małe lotto {znacznie łatwiejsza do uzyskania!} , a pojawią się i kłopoty (niebezpieczeństwo lub dezorganizacja stylu życia lub zazdrość itp)  Jeśli ktoś już gra w lotto to (dla mnie) granie w małe lotto świadczy o jego większym rozsądku/racjonalności, a granie w duże lotto odwrotnie  Pozdrawiam p.s. Zadanie z 1 postu można rozwiązać prostym programikiem iterującym pod warunkiem narzucenia ograniczenia na maksymalną ilość prób (długość owego ciągu). Można też uzmiennić to ograniczenie (czyli zautomatyzować kolejne symulacje) i liczyć na to, że komputer ""wyrobi" zanim uzyskamy wynik - będzie on bardzo zbliżony do teoretycznego.
|
|
| Arystyp z Cyreny (6368 punktów) | A propos rzucania monetą i rozkładu Bernoulliego polecam wszystkim "The System" Derrena Browna dostępny na YT np. tutaj. Jeśli ktoś tu jeszcze jest kto tego nie widział 
"Mądrość jest dobrem, aczkolwiek jest pożądana nie sama dla siebie, ale z uwagi na konsekwencje"
|
|
| Jarek Duda (1185 punktów) | To zadanie jest bardzo dobrze opracowane bodajże w 8 rozdziale "Matematyki Konkretnej" - szczególnie ciekawie się robi gdy pytasz się o pierwsze wystąpienie skomplikowanego konkretnego wzorca.
|
|
 | Hetman Twardowski (482 punktów) (zablokowany) | >To zadanie jest bardzo dobrze opracowane bodajże w 8 rozdziale "Matematyki Konkretnej" - szczególnie ciekawie się robi gdy pytasz się o pierwsze wystąpienie skomplikowanego konkretnego wzorca.
Patrzyłem i tam chyba nie ma rozwiązania tego problemu.
A dowolny podciąg pewnie niewiele tu zmieni, przynajmniej dla p = 1/2; tu przecież każdy taki string będzie jednakowo prawdopodobny - jak numery w totku.
|
|
Hetman Twardowski (482 punktów) (zablokowany) | I co z tą ilością serii w ciągu?
Może policzmy najkrótsze serie: k = 1, czyli ile razy pojawia się taki pojedynczy orzeł, na n strzałów.
01001110010110... tu są dwa
|
|
Aby pisać w tym wątku, musisz się zalogować
Zaloguj przez OpenID.. Jeżeli nie jesteś zarejestrowany/a - załóż konto..
Szukaj na Forum Przewodnik Regulamin i instrukcja obsługi Forum Kolegium Moderatorów 
|
 |
|