Dodaj wpis w tym temacie
Spis tematów | Strona: 1 2 ... 7 8 9 ... 30 31 Wyślij wiadomość do admina |
Przewiń wpisy ↓ | Turbo Pascal dla zielonych |
2010-05-03 (11:07)![]() Data rejestracji: 2010-04-28 00:00:00 Ilość postów: 4 ![]() | wpis nr 319 613 [ CZCIONKA MONOSPACE ] Chdzi mi o to jak się ściąga pliki które umieszczasz na wrzuc.to. Próbuje je ściągnąć ale nie potrafię. |
2010-05-03 (12:39)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 688 [ CZCIONKA MONOSPACE ] na czerwonym pasku jest \"pobierz plik\" . po naciśnięciu na ten baner w granicach 1-5 sekund wyskoczy okno pobierania. może masz problem ze swą przeglądarką ? |
2010-05-03 (17:09)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 879 [ CZCIONKA MONOSPACE ] Bardziej przydatna wersja , można powiedzieć , że to już program , który robi coś konkretnego. Chociaż zliczenie ile razy dana kulka wypada w ostatnich losowaniach , to też jakaś wiedza , lecz z punktu widzenie skomplikowania wykonanych obliczeń, to piaskownica. Można nawet \"ręcznie\" w ciągu kilku(nastu) minut zliczyć ile razy dana kulka była losowana w okresie 10-ciu , czy 15-stu losowań. No chyba że ktoś zlicza za okres większy , to \"ręcznie to już potrwa\". Proponuje coś takiego , co już ręcznie nie bardzo da się zrobić, w Arkuszach kalkulacyjnych owszem , ale wygodniej to zrobić w TurboPascalu a ewentualnie wyniki zapisane do pliku txt otwierać w Arkuszach kalkulacyjnych. Jest to już trochę bardziej zawiłe, ale cały czas powoli, przy użyciu znanych już instrukcji spróbujemy zrobić coś trudniejszego: Pierwszy kawałek , to wczytanie danych do tablicy jak to było poprzednio. Oraz już od razu wykona się kawałek programy który będziemy omawiać : ![]() a program wygląda tak : ![]() Usunęłam pytanie o wykonanie programy i troszkę \"zacieśniłam\" kod , pisząc kilka instrukcji w jednej linii by było więcej miejsca na ekranie. |
2010-05-03 (17:31)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 896 [ CZCIONKA MONOSPACE ] Początek , jak poprzednio wczytuje wyniki gry Lotto z pliku tekstowego. Wyniki są w tablicy Tab. Do tablicy T1 będą wprowadzane przerobione wyniki. Obecnie program przerabia wyniki losowania nr 1001 (pierwszy 1000 wyników darujemy sobie- tak czy inaczej musimy pierwszą część wyników traktować jako bazę do obliczenia nowych wyników). Przerobienie polega na tym że : Wynikiem losowania nr 1001 jest {42;22;16;9;5;2} Program sprawdza pierwsza kulkę {42} w którym poprzednim losowaniu wystąpiła i jest to 983 losowanie a więc odległość (przerwa w wystąpieniu) była =8 . Kulka {2} ostatnio była w losowaniu nr 1000 więc odległość =1 Piszę odległość a nie przerwa , bo przerwa to brak wystąpienia , a w przypadku kulki {2} odległość między losowaniami =1 to przerwa=0. Podobnie z kulką {42}, odległość = 8 to przerwa=7 Można zastosować słowo \"przerwa\" i skorygować tak program by zamiast 8 wyświetlił 7 np: write(........zapiszemy przerwę\',b-1); Widzę że w zapisie T1[x,y]:=dana ; jest błąd , ma być :T1[x,y]:=b; ale to i tak później omówimy. |
2010-05-03 (18:45)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 319 950 [ CZCIONKA MONOSPACE ] Dołożymy teraz pętlę for y:=1001 to licznik...... Poprzednio przeliczaliśmy wyniki losowania nr 1001 na podstawie wcześniejszych losowań. Można nawet ustawić : for y:=101 to licznik... ale około 100 losowań musimy mieć , by na ich odstawie można prawdidłowo przeliczać wyniki. Teraz przeliczamy losowania od nr 1001 do ostatniego jakie jest w bazie danych o numerze= licznik, czyli y . Należy zauważyć że \"Y\" jest równe numerowi ostatniego losowania w pliku tekstowym , ale w dalszej części programu \"Y\" przybiera inne wartości. Po prostu traci pamięć ![]() Ale \"licznik\" przejmuje wartość zapamiętaną w \"Y\" dlatego \"Y\" w dalszej części może mieć inne wartości , a ilość losowań jaka jest dostępna jest zapamietana w \"licznik\". Oto program : ![]() i jak teraz wyświetla na ekranie: ![]() Też warto zauważyć , że równocześnie z wyświetlaniem na ekranie (writeln) zapisuje (prawie ) to samo do tablicy T1. |
2010-05-03 (23:46)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 320 133 [ CZCIONKA MONOSPACE ] A po stworzeniu pliku \"przerobione\" ktory będzie tworzył plik tekstowy na dysku G - to jest w drugim poleceniu assign i również tam zostaną zapisane \"przerobione wyniki\" : ![]() obok widać jak wygląda ten plik txt otwarty notatnikiem. |
2010-05-05 (01:07)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 320 560 [ CZCIONKA MONOSPACE ] Dalej można zobaczyć jakie odstępy są najczęściej : ![]() a taka statystyka pokaże się : ![]() Użyte instrukcje są wcześniej omówione , ale jak będę mieć czas to raz jeszcze opisze ten program i jeszcze go zmodyfikuje. |
2010-05-05 (23:23)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 320 883 [ CZCIONKA MONOSPACE ] Następna modyfikacja, polega na tym , że sprawdza ile z 6-ciu losowanych kulek to kulki z odstępem małym -ustawiane w IF B>7 then inc(b2) else inc(b1). Jeżeli odstęp wylosowanej liczby jest > od 7 to zmienna b2 zwiększa się +1. A jak nie to zmienna b1 zwiększa się o jeden. Następnie zmienna c=b1+10*b2 . Można zauważyć, że b1+b2=6 bo 6 liczb (kulek) losowanych. Ale podział może być różny np : wszystkie 6 kulek mają mały odstęp. b1=6 , a b2=0 wtedy c=6 lub: b1=3 , i b2=3 wtedy c=33 itd. Mając 7 możliwości , poleceniem case of c badamy która z 7-dmiu opcji wystepuje w kolejnych losowaniach. wyniki wyświetlamy na ekranie (a można zapisać je do pliku txt, do tablicy) . ![]() a tak wygląda po uruchomieniu : ![]() |
2010-05-05 (23:40)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 320 885 [ CZCIONKA MONOSPACE ] Celowo raz piszę np inc(b1) - zwiększenie o jeden, a nie b1:=b1+1 - dodanie dwóch liczb (zmiennej b i liczby jeden) innym razem właśnie używam sumowania dwóch liczb. Niby jest to to samo , ale po coś ktoś wymyślił instrukcje INC (jak i odjąć jeden -DEC). Ma to na celu przyśpieszenie wykonywania się programu. Aby dodać dwie liczby (choć ta druga to tylko jeden) to procesor wykonuje więcej kroków niż gdy ma zwiększyć liczbę o jeden. Dodawanie wiąże się z tym że najpierw jedna liczba wędruje do rejestru (akumulatora) później druga do rejestru (w zależności od procesorów różnie to wygląda i różnie nazywa się drugi rejestr) , następnie jest faktyczne dodawanie , i w czwartej fazie wynik wędruje do akumulatora . Następnie wędruje do komórki pamięci przydzielonej przez program . W instrukcji INC oraz DEC nie bierze udział druga liczba i pomijane są kroki związane z jej odczytem z komórki pamięci przydzielonej dla programu, a więc po pobraniu liczby pierwszej do akumulatora , następnie zawartość akumulatora jest zwiększana o jeden i wysłana z powrotem do komórki pamięci programu. jest to około 3-4 razy szybciej , a jeżeli w programie taka instrukcja powtarza się często to w sumie program może nawet \"chodzić\" 50% szybciej, a już wzrost prędkości o 20, czy 30% jest zauważalny. Przykład programu minilotto czy lotto , tam jedną z podstawowych operacji to dodawanie liczby jeden. |
2010-05-17 (14:45)![]() Data rejestracji: 2010-05-03 00:00:00 Ilość postów: 18 ![]() | wpis nr 325 056 [ CZCIONKA MONOSPACE ] KURKA podaj mnie swojego emaila. |
2010-05-17 (18:43)![]() Data rejestracji: 2009-04-18 00:00:00 Ilość postów: 722 ![]() | wpis nr 325 130 [ CZCIONKA MONOSPACE ] Kurka teraz myśli o polityce. Szkoda, że nie kontynuuje tematu Turbo Pascala. Mnie ten wątek pomógł o tyle, że bez problemu przerobiłem program w pół godziny do potrzebnych rzeczy. Teraz bez problemu robię szybko wszystko co chcę nawet w grze 6 z 90 ! A jest tego sporo, bo to w excelu np. w grze 6/90 jest 622614630 wierszy a w każdym wierszu od kilkudziesięciu do kilkuset komórek z liczbami i formułami. Niby tylko techniczne rzeczy a jednak ważne. Nie zawsze można liczyć na programistów i nie zawsze można wszystko im powiedzieć. Najlepiej liczyć na samego siebie. Mnie by np. interesowało jak się sprawnie robi mapy i wykresy /charakterystyki/ oraz wykorzystanie w TP operatorów matematycznych. Dużo kreatywnych myśli Wszystkim |
2010-05-17 (20:56)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 325 182 [ CZCIONKA MONOSPACE ] Kurka w politykę się nie angażuje, a kilka słów można czasem napisać , potrząsnąć , by uświadomić niewidomym parę rzeczy. Widzisz TDP, jak się ludziom dosadnie napisze to chyba zaczynają łapać , bo cisza w owy temacie. hnatek01 ja nie szukam na razie reklamy ![]() |
2010-05-17 (23:31)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 325 281 [ CZCIONKA MONOSPACE ] TDP odnośnie wykresów to niestety na początek to nie jest dobre rozwiązanie. to nie excel , gdzie są już w nim programy robiące grafikę , my podajemy tylko dane , w tp musimy stworzyć grafikę korzystając z modułu GRAPH . Na razie piszemy krótkie programy , następnie można myśleć o dłuższych które mogą składać się z procedur , a w trybie graficznym ilość procedur jest już spora (odpowiedzialna za rysowanie a nie pisanie na ekranie). może coś prostszego , maszynka losująca ??? Tu można , w miarę rozwoju programu , stworzyć jedną procedurę . Na upartego procedurę można tworzyć nawet tam gdzie jest zbędna. Np można zrobić procedurę \'wczytanie danych\' Ale tylko raz wczytujemy dane z pliku txt więc nie ma sensu robienia procedury. Sens jest gdy procedura jest w kilku miejscach i zamiast pisać kilka razy to samo , zastępujemy 10, czy 15 , czy nawet 20 linii , jedną. A myślę , że z prostych rzeczy , a zarazem ściśle związanych z grami losowymi, to aż sie prosi , by zrobić sobie maszynkę losującą. |
2010-05-17 (23:58)![]() Data rejestracji: 2009-04-18 00:00:00 Ilość postów: 722 ![]() | wpis nr 325 286 [ CZCIONKA MONOSPACE ] Excelowe wykresy dla mnie są już niewystarczające. Excel nie ma nawet kompletu funkcji trygonometrycznych. Dziwi mnie to mocno. Jak idzie o generatory, to można w excelu generować dowolne zestawy losowań. Sam korzystam z generatora \"Lotto Selector XL v 104. Każdy Twój program ma oczywiście silny walor edukacyjny. Natomiast jak zaprogramować w TP rozbudowane obliczenia, to by było coś ważnego do opanowania. Mam na myśli rozbudowane wielopiętrowe wyrażenia, wiesz o co chodzi. Gdyby coś takiego przyszło obliczyć jeden raz, to żaden problem, ale w zamiarze program ma tych obliczeń robić dużo i ciągle.. No i te wykresy, charakterystyki i mapy. Wszystkiego Dobrego |
2010-05-18 (00:08)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 325 287 [ CZCIONKA MONOSPACE ] Spróbuj , zrobić program losujący liczbę od 1 do 49 za pomocą tego co już wiesz. Nie używaj randomize , bo na razie o tym nie było ![]() W roli \"start/stop\" można użyć : (pisał o tym chyba Marco19..), keypressed; np : repeat ................................. until keypressed; Wówczas masz prawdziwy generator losowy. |
2010-05-18 (20:47)![]() Data rejestracji: 2009-04-18 00:00:00 Ilość postów: 722 ![]() | wpis nr 325 546 [ CZCIONKA MONOSPACE ] Jasne, taki powyżej opisany generator jest losowy. Tylko musisz co chwilę wciskać klawisz ![]() Ale skoro tak Cię pociągają generatory, to proponuję ciekawe zadanie do rozwiązania. Trzeba zrobić program, szybki program / w trybie tekstowym/ który wykona nam możliwie największą liczbę losowań poszczególnych gier w taki sposób, aby losował obiekty losowe aż do pełnego cyklu tj. wylosowania pełnej permutacji. Czyli np. w DL program losuje kombinacje do wyczerpania wszystkich 13983816 kombinacji i zapisuje statystykę. Na życzenie zapisuje wybrana ilość /np. tysiąc/ najczęstszych kombinacji.. Czyli program powinien zapisywać ile losowań było potrzebnych do wykonania pełnej permutacji oraz podawać ile razy powtórzyły się najczęstsze kombinacje. Na życzenie powinien zapisywać określoną wybraną ilość tych kombinacji, albo nawet cały wylosowany ciąg przedstawiony np. na osi - zmienna porządkowa i ilość wypadnięć. Kombinacje najlepiej dla lepszej czytelności przedstawiać jako zmienną porządkową licznika - można ją w razie potrzeby przetłumaczyć na kulki. Program powinien też rejestrować takie statystyki jak np. najczęstszy moment rozpoczęcia powtórek i odstępy pomiędzy powtórkami. Gdyby jeszcze jakaś charakterystyka ww. zjawisk na wykresie, to trafisz do poważnej literatury tematu.. I tak zadaną ilość razy, im więcej pełnych cykli - permutacji tym lepiej. Oczywiście interesuje mnie w tym doświadczeniu głównie zbiorcza statystyka a nie konkretne kombinacje - ewentualne wyświetlenie najczęstszych kombinacji pozwoli skontrolować - czy program aby nie fałszuje... Co prawda już sam robiłem takie doświadczenie, ale w prymitywny sposób i za małą ilość razy /czasu brakuje/. Taki program dałby mi osobiście pewność teoretycznych domniemań. Teoria powinna być wsparta praktyką. Myślę, że wielu czytelników byłoby zainteresowanych. Z drugiej strony wielu doprowadzi to do wybuchu gniewu, jak wszystko na tym forum. Na to nie ma już dobrej rady. |
2010-05-18 (21:08)![]() Data rejestracji: 2009-03-22 00:00:00 Ilość postów: 481 ![]() | wpis nr 325 557 [ CZCIONKA MONOSPACE ] O tak TDP, już na samą myśl o takiej pełnej permutacji robi mi się uśmiech na twarzy biorąc pod uwagę prawdopodobieństwo, czyli teorię, a statystykę, czyli praktykę. Tu będzie można dostrzec rzeczy, które wynikają z ....logicznego myślenia, będzie można zobaczyć wpływ rozumowania na temat błędu pomiaru, myślę,że to ważna rzecz, która właśnie różni wielu graczy, a stąd już blisko do odpowiedniej strategii gry, jaką należy obierać |
2010-05-18 (21:20)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 325 566 [ CZCIONKA MONOSPACE ] Dla przeprowadzenie kilkuset losowań naprawdę losowych można zastosować \"ręczne\" losowanie przy pomocy programu - trochę dziwnie to brzmi ![]() Ale tutaj nie ma mowy o ręcznym losowaniu. Przy użyciu jednej zmiennej LICZNIK zamiast 6-ciu zmiennych KULKI, nie było by to chyba zbyt trudne dla początkujących , ale jak wiesz procedura która tworzy LOS jest mocno pseudolosowa ![]() przy liczbie 32 bitowej mamy \"rozdzielczość\" tylko 4 mld , to tak jakbyś miał 4 talie kart potasowanych kart. Program zacznie wyciągać karty od nr x i wybierze ich tyle aż znajdzie po jednej figurze . Najgorsze jest to że te karty nie tasują się , leżą cały czas na kupce a raczej nie na kupce a są ułożone w krąg. Program raz zacznie od karty leżącej na południku 0 stopni i wybiera jak leci dotąd aż znajdzie po minimum jednej figurze . Innym razem wybierze jako start południk 30 stopni. Konstrukcja Randomize (konstrukcja algorytmu - to inaczej sposób w jaki ułożono karty. Gdyby chodziło o wybór karty w kolorze pik , to mając 4 talie , można już przyjąć że takie czy inne \"stałe\" rozłożenie kart nie ma znaczącego wpływu na losowe znalezienie jednego pika, ale nadal ma. |
2010-05-18 (21:27)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 325 572 [ CZCIONKA MONOSPACE ] Marco1972 masz wiedzę czy w tym Free Pascalu dzialają wstawki assemblera. Kolega mój próbował i niestety musiał zrobić w delphi (dotyczy innego programu) Chodzi o pobranie kilku rzeczy np licznika rozkazów, licznika znacznika czasowego . powinno takie coś działać , ale nie chce : asm rdtsc mov [h],edx mov [l],eax end; |
2010-05-19 (00:29)![]() Data rejestracji: 2009-01-23 00:00:00 Ilość postów: 2551 ![]() | wpis nr 325 663 [ CZCIONKA MONOSPACE ] Więc pozostaje skorzystać z Randomize i losować po jednej kulce , wówczas wpływ pseudolosowości jest milion razy mniejszy niż gdy losujemy LICZNIK - zestaw 6 -cio kulkowy za jednym pociągnięciem. Na początek jak to działa. Random(10) - losuje liczbę od 0 do 9 - jedną z 10-ciu. możemy do zmiennej : \"kulka1\" wpisać wynik z random(10) : kulka1:=random(10); ale my chcemy by losować numerek od 1 do 49. Robimy sztuczkę : random(48)+1 -teraz losuje od 0 do 48 i dodaje 1wiec wynikiem będą liczby od 1 do 49 kulka1:=random(48)+1; Po uruchomieniu programu wylosuje nam 27. Gdy zrobimy petle aby losował kilka liczb to wylosuje nam : 27, 29, 35, 41, 29, 42, 27, 41, 21, 30 ......itd ale zawsze losuje to samo. Czyli karty są tak samo ułożone a jest ich bardzo dużo. Nie wiem czy to omawiać , bo jest to niby zbędne, ile jest tych kart itd. Warto i trzeba powiedzieć , że punkt startu określamy na dwa sposoby : łatwy poprzez zainicjowanie ziarna (początku- punkt startu)poprzez Randomize albo trudniej poprzez określenie konkretnego punktu używając Randseed. Randomize określa na podstawie czasu systemowego , czyli pobiera z kompa aktualny czas w ms i ma dzięki temu co chwilę inną wartość . Randseed sami ustalamy jaką będzie mieć wartość, możemy wpisać tam konkretną wartość i wówczas RANDOM będzie zawsze startował z tego samego punktu , co czyni bez inicjacji ziarna (losuje zawsze te same liczby), lub wartość wpisywaną do Randseed będziemy obliczać , pobierać z innych możliwych źródeł- ale to wyższa matematyka. Na początek zrobimy najprościej : randomize; kulka1:=random(48)+1; za każdym uruchomieniem programy będzie inna liczba |
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lotto | Strona: 1 2 ... 7 8 9 ... 30 31 Wyślij wiadomość do admina |