Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 3 4 5 ... 41 42 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | Generator kombinacji gier liczbowych (moderator tematu: Amadeus) |
2012-04-30 (23:58)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 483 [ CZCIONKA MONOSPACE ] "słaby" generator nie wygeneruje Ci przypadku bułgarskiego. Porównanie dwóch generatorów wymaga sporo czasu , jak widzisz na przykładzie 50 orłów jest to absurdalne , ale niestety "mocny" generator będzie pracował rok zanim się przekręci i zacznie od nowa a slaby za 2 godziny już losuje to samo od nowa. |
2012-05-01 (00:20)![]() Data rejestracji: 2008-10-13 Ilość postów: 20531 ![]() | wpis nr 520 484 [ CZCIONKA MONOSPACE ] Chodzi mi o praktyczne testy generatorów i porównanie w zakresie słabszego generatora. Przykładem może być wyciągniecie wszystkich 6 z 49. Pisałaś, że dobry generator to ten, który zrobi to na mniejszej ilości losowań. |
2012-05-01 (01:11)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 488 [ CZCIONKA MONOSPACE ] Raczej tak nie pisałam , a jeśli gdzieś tak można było mnie zrozumieć to musiałam nieściśle coś napisać. Można powiedzieć że dobry generator będzie potrafił zarówno wylosować wszystkie 6z49 czyli prawie 14mln wyników w serii właśnie rzędu 15 mln losowań a z drugiej strony będzie potrzebował na to tysiące razy więcej losowań. Prościej przelożyć to na rzut kostką . Jest 6 możliwości i by wszystkie 6 zostały wylosowane to generator powinien potrafić wyrzucić wyniki w ilości właśnie 6 losowań (minimalna ilość jaka jest potrzebna) jak i potrafi wyrzucać tysiące wyników zanim osiągnie wszystkie 6 możliwości. Ilość serii gdzie w ciągu 6-ciu prób już wylosuje nasze 6 zdarzeń na tle tysięcy innych prób gdzie będzie potrzebował rzucać więcej razy powinna być zgodna z RP . Podobnie ilość serii po 100 prób gdzie po 100-tnej jest wszystkie 6 zdarzeń na tle wszystkich uruchomień generatora powinna być zgodna z RP . Jak widać należało by przeprowadzić tysiące uruchomień i zapisać ilość prób potrzebnych do wykonania zadania . Następnie można rzucić to na wykres , na którym jest również wykres jak mówi nam RP ile jakich serii ma być i wtedy widać wizualnie jakość generatora. Wylosowanie w 14 mln prób wszystkich zdarzeń 6z49 jest tak mało prawdopodobne że trudno oczekiwać by udało się nam do tek małej ilości prób zbliżyć , ale generator teoretycznie powinien móc bez przeszkód kiedyś wyrzucić taką krótką serię . Natomiast Random32 (a i Random64 zapewne też) nie jest w stanie takiej serii stworzyć nawet gdyby pracował od początku świata do jego końca ![]() Tutaj być może potrzeba generatorów 512 bitowych lub jeszcze mocniejszych, by bez przeszkód teoretycznych takie zdarzenie było możliwe - tzn wygenerowanie wśród 14mln losowych prób wszystkich zdarzeń 6z49 |
2012-05-01 (01:32)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 491 [ CZCIONKA MONOSPACE ] By przekonać się na własnej skórze , napisz program : generator losowy 4 bitowy za jego pomocą możesz badać rzut kostką do gry . generator taki ma łańcuch złożony z 2^4=16 ogniw np: 1,2,3,4,5,6,3,5,1,2,4,4,3,2,1 ...i od nowa z tego wniosek że nigdy nie wylosuje np dwóch piątek z rzędu , oraz żadnej ilości oczek 3 razy z rzędu . generator 8 bitowy będzie miał łańcuch z 256 ogniw a 32 bitowy ma 4,3mld oczek więc w tak długim łancuchu będzie sytuacja gdzie kilkanaście razy z rżedu wystąpi np 5 oczek , ale 20 razy z rzędu raczej już nie wystąpi. W generatorze 2^64 może już być blisko 20 razy z rzędu ta sam ilość oczek a w generatorze o łańcuchy złożonym z 2^512 na pewno ponad 20 razy z rzędu pojawią się te same ilości oczek. |
2012-05-01 (13:42)![]() Data rejestracji: 2008-10-13 Ilość postów: 20531 ![]() | wpis nr 520 645 [ CZCIONKA MONOSPACE ] Witam Kurka - mnie interesuje praktyczne wykorzystanie dobrego generatora w grze Lotto. Po teście na skuteczność trafienia wylosowanej szóstki a było ich w teście 1000 Random zmieścił się w RP a ISAAC nie. Sprawdzę to jeszcze na wszystkich losowaniach Lotto. Pozdrawiam |
2012-05-01 (16:09)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 727 [ CZCIONKA MONOSPACE ] Sindbad , zapuściłeś kilkanaście razy Random32 i nie zeszłeś poniżej 200mln losowań by uzyskać wszystkie 6z49 , a przecież istnieje jeden taki szereg o długości = 13.983.816 , 6 szeregów o długości 13.983817 itd Random 32 może nie mieć w swoim łańcuchu tak ułożonych ogniw by mógł zejść do tak niskiej ilości i nigdy tego nie zrobi więc jest bardzo pseudolosowy . Fakt że by zejść poniżej 200ml musimy być cierpliwi i uruchamiać wiele razy by się udało ale przy dobrym generatorze będzie możliwe nawet zejście do 14mln losowań, co nie znaczy że się nam uda - podobnie można trafić 6z6 ale nie koniecznie nam się to uda ![]() To że random32 szybciej dąży do RP nie znaczy wcale że jest lepszy a wręcz odwrotnie. Generator kilkubitowy (np 8bit) bardzo szybko zacznie powtarzać się więc musi szybko generować idealnie zgodnie z RP - analogia do rzutu monetą Przy rzucie monetą wystarcza tysiąc rzutów by odchylenie od wyników 50%orłów i 50% reszt było niewielkie rzędu do 5% Ale już 1000 rzutów kostką do gry może dać dość duże odchylenia w wypadaniu poszczególnych oczek. Ale to tylko jedno porównanie z RP , drugie porównanie które obnaża "słabość" random32 wymaga wiele więcej uruchomień. Chodzi o to by porównać (na przykładzie rzutu monetą ) nie tylko ilość orlów i reszt (czy jest po 50%) ale i : ilość serii o długości=2 , o długości=3 , równej 4 ......33 ! i tu już taka długośc nie wystąpi a powinna jak i dłuższe długości serii orlów cze reszt. w przypadku rzutu kostką oprócz serii można porównywać jeszcze inne układy a w przypadku 6z49 to jest cała gama możliwości Ale takie badanie generatora jest dla nas niewykonalne czasowo. Podobnie jak sprawdzić czy mikroskop elektronowy pokaże nam prawdziwy obraz atomu? Jak w ogóle można mówić o tym że "widzimy atom" skoro jego rozmiar jest mniejszy od długości fali widzialnej ![]() |
2012-05-01 (16:40)![]() Data rejestracji: 2008-10-13 Ilość postów: 20531 ![]() | wpis nr 520 735 [ CZCIONKA MONOSPACE ] "Ale takie badanie generatora jest dla nas niewykonalne czasowo." Dlatego piszę ponownie, że mnie interesuje praktyczne wykorzystanie generatora. Wybieram ten generator, który da mi lepsze wyniki przed kolejnym losowaniem a nie za 10 lat. |
2012-05-01 (17:24)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 750 [ CZCIONKA MONOSPACE ] Random32 nigdy nie da Ci dobrych wyników bo jest za slaby , prawdopodobnie nie jest w stanie nawet wygenerować tych kilku tysięcy wyników w takiej kolejności jak do tej pory wypadały. Może taki program : 1) tablica z znanymi wynikami lotto 2) generator Random32 generuje kolejne losowanie 3) sprawdzamy z tablicą czy kolejne losowanie jest zgodne z wzorcem w tablicy , jeśli nie to od początku i podejrzewam że choćbyśmy pozostawili komputer na 24 godziny to Random32 nie wyrzuci nam takiej kolejności losowań w jakiej były wylosowane chyba że ograniczymy tablice z wynikami do ostatnich 100 czy 500-set losowań. Natomiast mocny generator wcześniej czy później wylosuje nawet dokładnie w takiej kolejności jak wypadały kulki ! |
2012-05-01 (18:05)![]() Data rejestracji: 2008-10-13 Ilość postów: 20531 ![]() | wpis nr 520 760 [ CZCIONKA MONOSPACE ] Jestem w trakcie testu na trafienie szóstki. Ilość prób to ilość losowań 5154. Generator losuje tak długo aż trafi na szóstkę z danego losowania. Wynikiem powinno być zbliżenie się do RP. |
2012-05-01 (18:26)![]() Data rejestracji: 2008-10-13 Ilość postów: 20531 ![]() | wpis nr 520 768 [ CZCIONKA MONOSPACE ] Przypomniałem sobie, że kiedyś widziałem na tej stronie wykres i "szanse" na trafienie szóstki. Było to chyba jakieś 90 milionów losowań z bardzo wysokim procentem może 99,99%. To również dotyczy trafienia 1 liczby w MM gdzie jest bodajże 15 losowań. Podejrzewam, że wychodzi tak, dlatego że RP nie bierze pod uwagę powtórek. |
2012-05-01 (18:33)![]() Data rejestracji: 2010-02-28 Ilość postów: 4889 ![]() | wpis nr 520 770 [ CZCIONKA MONOSPACE ] witam prawdopodonie chodzi o to - *Prawdopodobieństwo trafienia "szóstki" w Dużego Lotka* bardzo dobry, moim zdaniem, tekst - http://www.multipasko.pl/news41.html |
2012-05-01 (18:37)![]() Data rejestracji: 2008-10-13 Ilość postów: 20531 ![]() | wpis nr 520 773 [ CZCIONKA MONOSPACE ] Dzięki Ci Robal to jest właśnie to. Pozdrawiam |
2012-05-01 (18:54)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 777 [ CZCIONKA MONOSPACE ] Zacytuje Pasko : N = 1 000 000 - wynik 6,90% N = 3 000 000 - wynik 19,31% N = 5 000 000 - wynik 30,06% N = 10 000 000 - wynik 51,08% N = 20 000 000 - wynik 76,07% N = 30 000 000 - wynik 88,29% N = 40 000 000 - wynik 94,27% N = 50 000 000 - wynik 97,20% N = 100 000 000 - wynik 99,92% N = 128 800 000 - wynik 99,99% więc Random którego użył Sindbad dawał 100% przy około N= 200 000 000 By "pobadać" porównać dwa generatory , można zatem użyć np 1mln (stosunkowo szybko generuje się 1mln) losowań i wynikiem będzie ilość szóstek . Wiele uruchomień powinno pokazać że gorszy generator będzie dość sztywno trzymał się określonej ilości szóstek a lepszy będzie potrafił wylosować i dużo szóstek (np 900 tyś na 1 mln) i mało - skrajne przypadki. |
2012-05-01 (18:56)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 779 [ CZCIONKA MONOSPACE ] Byc może dużo to 999 tysięcy na 1mln a mało to 600 tyś na milion. Teoretycznie dobry potrafi wylosować nawet 1mln szóstek na 1 mln generowanych losowań = kazda z miliona szóstek jest inna. |
2012-05-01 (19:24)![]() Data rejestracji: 2008-10-13 Ilość postów: 20531 ![]() | wpis nr 520 786 [ CZCIONKA MONOSPACE ] Te 200 milionów to wynik z innej beczki. Skończyłem losować (5 godzin brrrr). ISAAC wykonał 73 257 902 205 losowań i trafił wszystkie losowania Lotto. Minimalne oczekiwanie to 3460 do szóstki z losowania 466;9;1;1966;32;31;30;26;23;17 Maksymalne oczekiwanie to 117071445 do szóstki z losowania 3776;13;6;2001;43;25;23;22;9;7 Średnia to 14 213 795 czyli wyższa od RP. Dane tych próbek wraz z losowaniami zamieściłem w pliku. http://wrzucacz.pl/file/1451335892665/ISAAC_Los.xls |
2012-05-01 (20:35)![]() Data rejestracji: 2009-04-30 Ilość postów: 820 ![]() | wpis nr 520 809 [ CZCIONKA MONOSPACE ] Proponuję modyfikację eksperymentu, która obnaży zgrzebną prostotę generatora random. Do eksperymentu wymagana jest funkcja konwertująca kod CSN na kombinację 6/49 (zawarłem taką w moim generatorze genlotto). Algorytm (notacja Pascal, trywialna do konwersji na Delphi): Funkcja: Function RandomCSN:Longint; var x:integer; begin repeat x := random(10); {x bez znaczenia, chodzi jedynie o wymuszenie zmiany wartości zarodka randseed } csn := randseed shr 8; { redukcja z 32 do 24 bitów, czyli 16 mln kombinacji } until csn<13983817; RandomCSN:=CSN; end; Program z funkcją: begin RandSeed := 0; {startowa wartość randseed } repeat {powtarzaj...} writeln(kombinacja_z_csn(RandomCSN)); until (randseed=0); { ... aż do zamknięcia cyklu } Wyjaśnienie: Tak, jak wyjaśniała to obrazowo w jednym ze swoich postów Kurka, generator Randseed to prymitywny pierścień liczb, liczący sobie 2^32-1 ogniw. PODKREŚLĘ TO DRUKOWANYMI LITERAMI: TEN GENERATOR JEST TOŻSAMY ZE STAŁĄ TABLICĄ ARRAY[0..2^32-1] Of Longint, gdzie "generowanie" można w istocie sprowadzić do operacji odczytu z tablicy, czyli LosowyLongint := Tablica[AktualnyRandseed]; Raz jeszcze: TA TABLICA JEST STAŁA. Prymitywne "Randomize" to z kolei wybranie w powyżej opisanym łańcuchu jednej z JEDYNIE 1573040 wartości, wytworzonych przez zegar systemowy. Czyli "generator lotto" działający tak: randomize; kombinacja := kombinacja_z_csn(wartoscPseudolosowazrandom); wygenerować może jedynie 1573040 kombinacji, o ile odpalamy go jednorazowo CAŁODOBOWO. W przeciwnym wypadku kombinacji jest MNIEJ niż 1573040 (bo na nogach jesteśmy mniej niż całą dobę). Czyli ostatecznie nasza sytuacja matematycznie wygląda tak: Ze STAŁEGO niezmiennego łańcucha liczb, liczącego sobie 2^32-1 liczb, wybrać możemy funkcją Randomize jeden z MNIEJ NIŻ 1573040 "punktów startowych". Począwszy od tego punktu, każde kolejne wywołanie funkcji Random() spowoduje, że przesuniemy się o jedno ogniwo dalej w tym lańcuchu, a wartość tego ogniwa zostanie "przykrojona" do żądanego w funkcji random zakresu. Oznacza to w sposób oczywisty, że pewne następstwa kombinacji NIGDY nie zostaną wylosowane, gdyż ilość stanów generatora jest MNIEJSZA niż wymagana do wystąpienia takich następstw. Powyższy przykładowy program robi właśnie to: wymusza zmianę wartości randseed (czyli KROK W STAŁEJ TABLICY/W NIEZMIENNYM ŁAŃCUCHU wartości randseed) i po redukcji do 24 bitów, jeśli trafia ona w zakres kodów CSN dla 6/49 zwraca wyjściową kombinację. Wyrzuci on nam ciąg mniej niż 2^32 kombinacji, które należy zbadać pod kątem następstw, powtórzeń, itp. KAŻDE losowanie tym generatorem z użyciem inicjacji "Randseed := x;" albo "Randomize;" wygeneruje nam jedynie WYCINEK "ciągu-matki" kombinacji Lotto, niejako "zamrożonych" w łańcuchu Randseed. To samo dotyczy się rzeczywistej funkcji random - mimo tego, że z wartością randseed wyczynia ona więcej kombinacji, nie zmienia to ani trochę faktu, że cały czas posuwamy się w jednym kierunku przez STAŁĄ TABLICĘ/NIEZMIENNY ŁAŃCUCH wartości randseed. Pozdrawiam ciepło, Amadeus |
2012-05-01 (21:04)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 815 [ CZCIONKA MONOSPACE ] Amadeus , najszybsze operacje to operacje na bitach , dzielenie jest operacja złożoną i wymaga kilkanaście taktów zegara a być może i ponad 20 - zależy od koprocesora . Pewne Rejestry i Flagi rdzeni można odczytywać i będą one co chwile (praktycznie w każdym takcie zegara) inne . Wykorzystując procesor o minimum 2 rdzeniach możemy główny program "GENERATOR" uruchamiać na rdzeniu innym niż system operacyjny niech będzie że na rdzeniu nr1 Rejestr "Licznik rozkazów" rdzenia nr 0 (ten gdzie działa system operacyjny) cały czas się zmienia z różną intensywnością , podobnie licznik rdzenia , i jest to uzależnione od programów innych niż nasz GENERATOR, Dane to można wykorzystać jako zmienne współczynniki (w random jest stały wzór na wyliczenie kolejnej wartości) do obliczenia kolejnej wartości generowanej zmiennej losowej . Można zastosować wzór pozbawiony dzielenia jako działania długo-wykonywującego sie a zostapić je np : przesunięciem , obcięciem , zamianą ect bitów wskazywanych przez te dodatkowe zmienne , o wartość tych zmiennych ect - nie wiem jakie są jeszcze możliwości szybkich operacji na bitach lub słowach . |
2012-05-01 (21:14)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 822 [ CZCIONKA MONOSPACE ] Random32 można stosować do rzutu monetą , chociaż ponoć są rekordy po 44 sztuki czarnych (lub czerwonych) w ruletce więc nawet do takiego prostego zdarzenia losowego jak rzut monetą i inne o p=q jak widać nie do końca się nadaje. Zależy co w danej chwili symulujemy . Liczby jakie wchodzą w grę jeśli chodzi o ilości generowanych losowań trudne będą w wymowie więc jedynie można zapisać je cyfrowo np : jeśli chcemy by generator wylosował po kolei wszystkie losowania lotto to ilość prób może wynieść coś około 14mln ^ 10 000 uruchomień programu. dla porównania by wylosować wszystkie możliwe ale w dowolnej kolejności to jak widać wystarcza średnio około 200 mln losowań - w jednym uruchomieniu programu (random nigdy tego nie zrobi). |
2012-05-01 (21:14)![]() Data rejestracji: 2009-04-30 Ilość postów: 820 ![]() | wpis nr 520 823 [ CZCIONKA MONOSPACE ] 2012-05-01 (21:04) Kurka napisała: "Pewne Rejestry i Flagi rdzeni można odczytywać i będą one co chwile (praktycznie w każdym takcie zegara) inne. Rejestr "Licznik rozkazów" rdzenia nr 0 (ten gdzie działa system operacyjny) cały czas się zmienia z różną intensywnością , podobnie licznik rdzenia , i jest to uzależnione od programów innych niż nasz GENERATOR" Generowanie losowości z "szumu" procesora realizuje generator HAVEGE, jaki polecałem już kiedyś na tym forum ( http://forum.multipasko.pl/n_viewtopic.php?id=2993&page=12 - wpis z 2010-05-28 (23:38) ) Pozostaje mi pogratulować Ci, że tak "z piechoty" wymyśliłaś coś, co poza Tobą musiała wymyśleć ekipa francuskich naukowców ![]() A sam HAVEGE jest moim zdaniem świetny - jego "stanem wewnętrznym" są WSZYSTKIE procesy realizowane przez procesor, co w zasadzie gwarantuje brak jakichkolwiek cykli. W warunkach "szumu" nawet na przeciętnym komputerze generuje on ciąg tożsamy z losowym. Powstała też wersja HAVEGE na procesory wielordzeniowe: http://www.springerlink.com/content/752463l560g05133/ . Pozdrawiam, Amadeus |
2012-05-01 (21:43)![]() Data rejestracji: 2009-01-23 Ilość postów: 2551 ![]() | wpis nr 520 844 [ CZCIONKA MONOSPACE ] Ciekawe tylko czy nadal używają wolnego dzielenia czy ktoś wymyślił sposób szybkiego przekształcania ciągu bitów na nowy ciąg. Sama idea jest prosta a teraz gdy praktycznie nie ma jednordzeniowców to jest poszerzona możliwość . Trudności zapewne polegają na kompatybilności programu na dowolny procesor - w sumie program może sprawdzić gdzie się uruchamia i odpalić odpowiednią swoją wersję. Genarator musi umieć też wylosować liczbę o jeden większą/mniejszą (o niewiele większą/mniejszą) i być może tu były problemy polegające na tym że nie było jednak losowości w pewnych zakresach różnicy między starym i nowym wynikiem generowanym przez generator. Pewne liczniki (rejestry) mają co prawda niezależnie różne wartości ale o pewnej tendencji typu : licznik co odczyt wzrasta o kilka do kilkanaście a najczęściej o 6,7,8 więc nie ma równomiernego rozkładu w różnicy między obecnym a poprzednim odczytem. Zapewne jest wiele pułapek i dlatego pracowali nad tym długo. |
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 3 4 5 ... 41 42 Wyślij wiadomość do admina |