Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

Hasło:
Strona: 1 2 ... 10 11 12 ... 30 31
Wyślij wiadomość do admina

Przewiń wpisy ↓

Turbo Pascal dla zielonych

2010-05-22 (01:31)

status sindbad
Data rejestracji: 2008-10-13 00:00:00
Ilość postów: 20519

3794
wpis nr 326 615
[ CZCIONKA MONOSPACE ]

Jeśli chodzi o generator, jaki napisała KURKA to nie widzę plusów na jego korzyść.
2010-05-22 (02:53)

status Tajemniczy Don Pedro
Data rejestracji: 2009-04-18 00:00:00
Ilość postów: 722

4474
wpis nr 326 619
[ CZCIONKA MONOSPACE ]

Jeden z najlepszych i zarazem najprostszych testów umożliwiający porównanie wyników Twojego Kurko generatora z realnymi losowaniami polega na porównaniu osi z zaznaczonymi liczbami.



Oś ma 13983816 liczb. Liczby całkowite od 1 do 13983816.



No i zaznaczamy /tzn. zaznacza program komputerowy/ na tej osi wypadnięte liczby.



Nie ma potrzeby na początek zastanawiania się nad szczegółami, wówczas po prostu zgrubnie oceniamy, jak padają liczby na osiach.



Czy w sposób podobny,, czy w jakiś zdecydowanie różny.



Z różnic wyciągamy dopiero stosowne wnioski.



O wiele łatwiej badać liczby od 1 do 13983816, niż badać za kazdym razem sześć kulek..



Oczywiście zakładam, że udało Ci się zbudować zamierzony niezły generator.





Sindbad, Kurce zależy na tym, aby zrobić taki generator, w którym Ty nie będziesz w stanie przewidzieć kolejnych losowań.





Dobranoc
2010-05-22 (03:40)

status sindbad
Data rejestracji: 2008-10-13 00:00:00
Ilość postów: 20519

3794
wpis nr 326 620
[ CZCIONKA MONOSPACE ]

A kto przewidzi losowania z funkcji random() he! he!

Przeprowadziłem test Pi dla funkcji random()



Wzorcowe pi = 3,14159265358979



Wyliczone pi = 3,1268

Wyliczone pi = 3,1136

Wyliczone pi = 3,132

Wyliczone pi = 3,1424

Wyliczone pi = 3,1152

Wyliczone pi = 3,1204

Wyliczone pi = 3,1524

Wyliczone pi = 3,1284

Wyliczone pi = 3,134

Wyliczone pi = 3,1504

2010-05-22 (11:38)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 326 668
[ CZCIONKA MONOSPACE ]

Jak to zwykle bywa , racje mają wszyscy i nikt



Random jest szybki , ale jest pseudolosowy więc kto nie chce pseudolosowych losowań to nie bardzo lubi takie generatory.

Do zabawy z lotto, a szczególnie do nauki TP funkcja random jest nawet wskazana

By przeprowadzić 14 mln losowań wystarczy kilka sekund a nie kilkanaście minut - i to jest główna wada generatora kurki



Jak interpretować wyniki badanie generatora ?

Należy poczytać literaturę na ten temat , bo może wyniki z testu równomierności mojego generatora są zbyt dokładnie leżące wokół liczby 10 000 a wynik testu PI jest lepszy niż wynik testu PI funkcji Random ?



Kompromisem jest zastosowanie funkcji random i ustalanie początku i wielkości kawałka tortu za pomocą wstawki asemblera . Szybkość spadnie około 2 razy (nie 1000 razy) a będzie losowo*pseudolosowo















2010-05-22 (11:59)

status sindbad
Data rejestracji: 2008-10-13 00:00:00
Ilość postów: 20519

3794
wpis nr 326 679
[ CZCIONKA MONOSPACE ]

Witaj KURKA,

Nie wiem, jaki generator zastosowałaś, ale z Twoich wpisów domyślam się, że jest on pseudolosowy a nie losowy.

Pozdrawiam
2010-05-22 (12:12)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 326 686
[ CZCIONKA MONOSPACE ]

Pseudolosowy to on nie jest, przynajmniej w znaczeniu : następny wyraz tworzony jest na podstawie poprzedniego.



Pierwszy losowy programik polegał na naciskaniu klawisza co powodowało generowanie jednego losowania - prędkość kosmiczna = 50 do 100 losowań/minutę. Pętla robi karuzelę a naciśnięcie klawisza , zatrzymuje karuzelę w \"losowym miejscu\".



Te generator podobnie robi tylko karuzela to znacznik czasu procesora - karuzela kręci się tysiące razy szybciej a i jej wielkość jest miliony a raczej miliardy razy większa. Pewne procedury wymagają odwołań do urządzeń we/wy ( np ekran) i czas realizacji ich nie jest stały np 1000 ns tylko raz wynosi więcej raz mniej. Na każdym komputerze będzie inaczej, bo inne sterowniki i urządzenia (np karta graficzna) .

To jest sprzętowy generator . Nie ma tam funkcji która oblicza.

2010-05-24 (00:12)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 220
[ CZCIONKA MONOSPACE ]

Udało się mi uzyskać 500 000 losowań/minute (bardzo szybki procesor to 1mld/min) ale nie badałam go- może być gorszy od poprzedniej wersji.

Ale jak Sinbad zauważył , Random jest wystarczający do nauki i programów , które może pisać początkujący.

Sama dyskusja jest o tyle pożyteczna , że zwraca uwagę na konstrukcję generatorów pseudolosowych , na to by nie zapędzić się w kozi róg.



Używając Random (1mln losowań /s) można szybciej wykonać miliardy losowań np jak sugeruje TDP :

losujemy dotąd , aż zostaną wylosowane wszystkie kombinacje 6z49.

To może być nawet pół miliarda losowań a należy przypuszczać, że często będzie to ponad 100 milionów losowań .

Random zrobi to od 1 do kilku minut, ale ...

Powiedzmy że Random jest 24bitowy- co oznacza że posiada 17 mln kart z numerkami.

Wówczas zastosowanie go do tego programu jest bezcelowe.

Już po dwóch cyklach tj 34 mln losowań muszą być wszystkie losowania powtórzone, a po 17 mln losowań , zaczną się powtórki.

Random jest 32-bitowy co znaczy że ma ponad 4 mld kart, więc jest jeszcze margines , bo w programie jaki proponuje TDP można przypuszczać że wystarcza 1 miliard kart aby na 99,99% była przynajmniej jedna powtórka, więc tym bardziej 4 mld kart wystarczają.













2010-05-24 (00:19)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 221
[ CZCIONKA MONOSPACE ]



Errata:



Random jest 32-bitowy co znaczy że ma ponad 4 mld kart, więc jest jeszcze margines , bo w programie jaki proponuje TDP można przypuszczać że wystarcza 1 miliard kart aby na 99,99% przynajmniej jeden raz powtórzyły się wszystkie losowania, więc tym bardziej 4 mld kart powinny wystarczać.



Ale gdyby miało braknąć to i tak się nie dowiemy , bo po 4 miliardach losowań, znów wylosowane zostanie losowanie nr1, 2 ... itd , czyli wszystkie się powtórzą



Tam gdzie może być potrzeba losowania w granicach miliarda i więcej Random jest już niepewny .

natomiast ten mój miliard losowań i więcej będzie robił bardzo długo.











2010-05-24 (00:35)

status sindbad
Data rejestracji: 2008-10-13 00:00:00
Ilość postów: 20519

3794
wpis nr 327 222
[ CZCIONKA MONOSPACE ]

Witam,

Wylosowanie wszystkich kombinacji 6/49 wymagało ponad 200 milionów losowań w kilkunastu próbach, jakie przeprowadziłem funkcją random():



13983816 .. 216366078

13983816 .. 206276130

13983816 .. 240437512

13983816 .. 231868646

13983816 .. 266237899

13983816 .. 232788745

13983816 .. 216555372

13983816 .. 248515183

13983816 .. 225910428

13983816 .. 229931769

13983816 .. 222526318

13983816 .. 222362221

13983816 .. 235567989

13983816 .. 222590458

13983816 .. 228157136

13983816 .. 215291242

13983816 .. 242965302

13983816 .. 238131746



Myślę że zejście poniżej 200 milionów losowań będzie kłopotem i dla pseudolosowych odmian funkcji losujących.



Pozdrawiam

2010-05-24 (00:46)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 223
[ CZCIONKA MONOSPACE ]

Myślę , że na początek prosty program wykorzystujący generator pseudolosowy.



Podajemy 4 ostatnie wyniki z MM Plus - przedział plusa (1 z 4 przedziałów)



Losujemy pięć razy i mamy 5 wyników, porównujemy 4 wylosowane z 4 podanymi i jeśli się zgadzają to 5-ty jest prognozą , jeśli się nie zgadzają to losujemy ponownie do skutku.



program prognoza_przedział;

uses crt;

var a,b,c,d, p , a1,b1,c1,d1 ,x : byte ;

begin

randomize;

writeln(\'podaj 4 ostatnie wyniki\'):

readln(a); readln(b); readln(c); readln(d);

repeat

x:=0;

a1 := random(4)+1;

b1 := random(4)+1;

c 1:= random(4)+1;

d1:= random(4)+1;

p:= random(4)+1;



if a=a1 and b=b1 and c=c1 and d=d1 then x:=1;



until x=1;



writeln(\'Prognoza: \', p);

readln;

end.



Coś takiego powinno działać , później sprawdzę.



Myślę , że jest to proste do zrozumienia.



Podajemy 4 wyniki (a,b,c,d) i losujemy 5wyników (a1..d1 oraz p) z których 4 są porównane z podanymi .

Jezeli się zgadzają to piąty jest prognozą.

jeśli nie , to losowana jest nowa piątka wyników.











2010-05-24 (00:50)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 224
[ CZCIONKA MONOSPACE ]

To znaczy że Random to jeszcze może symulować ale w grze 6z90 już odpada.



Programik przedziały to zabawa , nie typowanie
2010-05-24 (00:58)

status sindbad
Data rejestracji: 2008-10-13 00:00:00
Ilość postów: 20519

3794
wpis nr 327 225
[ CZCIONKA MONOSPACE ]

Da radę i 6/90
2010-05-24 (01:03)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 226
[ CZCIONKA MONOSPACE ]

Sindbad

no nie wiem , nie sądzę by dawał wiarygodne wyniki , jeżeli ziarno będzie raz zainicjowane to nie ma szans.

ponad 600 mln kombinacji więc by się wszystkie powtórzyły to kilkanaście miliardów. W turbopascalu nie ma szans bo po 5mld zawsze będą wszystkie wylosowane.



wracając do badanie generatora - TEST PI - oraz teraz powyższe wyniki Random , martwią mnie - bo Random jest małolosowy.

Prawdopodobie może nie osiągnąć wyniku testu PI <3,00 mimo tysięcy prób, podobnie jak wyżej podałeś , może nie zejść poniżej 100 000 ani też osiągnąć 500 000 choćbyśmy powtarzali to miliony razy.

2010-05-24 (01:16)

status sindbad
Data rejestracji: 2008-10-13 00:00:00
Ilość postów: 20519

3794
wpis nr 327 227
[ CZCIONKA MONOSPACE ]

Za chwile się przekonamy, bo puściłem obliczenia na 6/90.
2010-05-24 (01:19)

status sindbad
Data rejestracji: 2008-10-13 00:00:00
Ilość postów: 20519

3794
wpis nr 327 228
[ CZCIONKA MONOSPACE ]

Masz rację do 5 miliardów machną



622614630 .. 4136746591



Wykonanie obliczeń zajęło: 327 sek.

2010-05-24 (01:27)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 229
[ CZCIONKA MONOSPACE ]

4,3mld kart i po tym następne muszą się powtarzać

0,6 mld kombinacji więc po 4,9 mld muszą być wszystkie ponownie drugi raz.



zobacz jak zapuścisz zamiast 6z49, czy 6 z 90 inną grę np z fortuny 3z21



czy też wyniki będą skupione jak dla 6z49 czy testu PI



Dla kostki do gry (1z6) wyniki mają spory rozrzut od 7 losowań do nawet blisko 100 losowań i tutaj random wykazuje że jest losowy.



Ale im więcej możliwych kombinacji to stosunek wszystkich kart 4,3mld do ilości kombinacji jest coraz bliżej 1 , gdy osiąga 1 to już do niczego random wówczas w takiej grze się nie nada, nawet do jednego losowania.



2010-05-24 (01:35)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 230
[ CZCIONKA MONOSPACE ]

znów errata (idę spać bo już bredzę )



Dla kostki do gry (1z6) wyniki mają spory rozrzut od 12 losowań do nawet blisko 100 losowań i tutaj random wykazuje że jest losowy.
2010-05-24 (14:30)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 328
[ CZCIONKA MONOSPACE ]

Znalazłam po polsku na czym polega FIPS 140-2 :



http://www.nettax.pl/serwis/imgpub/du/2002/128/1094_4.pdf



Są tam podane trochę inne wartości niż ja podawałam w oparciu o inne źródła , ale wiele się nie różnią lub wcale



natomiast jest informacja , że test można uważać za zaliczony wówczas gdy na każde 10 000 testów max w jednym z nich pojawia się wartość nie mieszcząca się w widełkach.

To znów oznacza że test powinien być powtórzony minimum 10 000 razy nie 10 razy jak ja to zrobiłam lub kilkanaście razy jak Simbad.



A tutaj ten programik do prognozy następnego przedziału MM PLUS:

















2010-05-24 (15:32)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 335
[ CZCIONKA MONOSPACE ]

Teraz proszę sobie dorobić część , która będzie losować 100 razy i będzie wówczas 100 prognoz.

Następnie 4 zmienne np : p1,p2,p3,p4 do których odpowiadają za informację ile razy na 100 prognoz będzie prognoza =1 , ile =2 , 3 oraz 4



Jak będą zainteresowani , to popiszemy dalej.

jak nie to trudno

2010-05-25 (23:42)

status KURKA
Data rejestracji: 2009-01-23 00:00:00
Ilość postów: 2551

4098
wpis nr 327 763
[ CZCIONKA MONOSPACE ]

Na razie nie ma chętnych do nauki, więc może z sindbadem podyskutuje na temat generatora Random .



Czy po zainicjowaniu ziarna użycie funkcji random ( chyba funkcji - bo zwraca wartość , nie procedury ?- nie programuje na co dzień więc terminy funkcja, procedura, instrukcja są dla mnie niekiedy mylące ) w kilku miejscach programu np :



begin

randomize:

for .....

a :=random (49)+1;

...... coś tam

b:= random(49)+1:

....coś tam

end;



jest równoznaczne z tym że wartość \"b\" jest obliczana na podstawie wcześniejszej wartości - która to była obliczona dla \"a\" ?



| Dodaj wpis w tym temacie | Spis tematów | Wyniki lottoStrona: 1 2 ... 10 11 12 ... 30 31
Wyślij wiadomość do admina