Forum strony www.multipasko.pl [Regulamin]


Dodaj wpis w tym temacie
Spis tematów
Login:

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

Przewiń wpisy ↓

Turbo Pascal dla zielonych

2010-05-29 (20:19)

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

4098
wpis nr 328 793
[ CZCIONKA MONOSPACE ]

w formule :



if tab[pom]>0 then inc(pom)

else jest:=0;



zawarte jest nieco więcej .



I) jeżeli w tablicy znajdziemy zero to przechodzimy do \"else\" .

powiedzmy że nie było szóstki nr 10.

pom=10 i sprawdzamy tablicę pod adresem=10, gdzie jest wartość=0 (nie ma szóstki) więc zmienna \"jest\" ustawiana zostaje na wartość = 0 -- co dalej wymusza powtórzenie losowania , a również :

II) ustawia nam zmienną \"pom\" na wartość = 10 , gdzie było zero (brak szóstki) . Tak więc następne sprawdzanie tablicy rozpocznie się nie od jej początku (nr 1) tylko od miejsca gdzie \"nie było szóstki\" .



wartość zmiennej \"pom\" jest zwiększana +1 ( inc) gdy szóstka widnieje w tablicy , jeśli nie ma szóstki to \"pom\" zostaje \"zamrożone\".



Należy zauważyć, że wartość w tablicy pod konkretnym adresem wskazuje ile razy dana szóstka była wylosowana , podobnie jak to było w wersji I.

w wersji III będzie inaczej !!!







2010-05-29 (20:46)

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

4098
wpis nr 328 800
[ CZCIONKA MONOSPACE ]

Powtórzę bo nowa strona : II wersja







istotna zmiana w stosunku do I wersji to fakt że nie sprawdzamy prawie 14mln adresów tablicy co zajmuje sporo czasu , a sprawdzamy tylko część .



na samym początku (pierwsze losowanie) może to być ( i tak będzie w 99,999%) tylko pierwszy adres nr 1, bo jeśli w pierwszym losowaniu nie wylosowano {1,2,3,4,5,6} czyli nr 1 to nie sprawdzamy już dalej bo jednej szóstki już nie ma .

następne sprawdzenie rozpocznie się ponownie od nr 1 bo zmienna \"pom\" została \"zamrożona\" na tym własnie numerze.



gdy po 1000 losowań okaże się że wylosowano szóstki nr 1,2,23,99 itd.

to po sprawdzeniu szóstki nr 3 zostanie stwierdzony jej BRAK- i dlasze pozycje już nie są sprawdzane ,

nastepne sprawdzenia rozpoczną się od nr 3, bo tu nie było szóstki więc nie ma potrzeby sprawdzania nr 1 i2 .



2010-05-29 (20:54)

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

4098
wpis nr 328 807
[ CZCIONKA MONOSPACE ]

W skrajnym przypadku , gdy ostatnia brakująca szóstka to {1,2,3,4,5,6} czyli o nr 1 --- czas trwania programu bedzie praktycznie = wersji III.



Dlaczego?



Ponieważ w wersji II w tej sytuacji sprawdzamy pozycję nr 1 i stwierdzamy brak szóstki co skutkuje następnym losowaniem , oraz brakiem dalszego sprawdzania tablicy. Ponownie po następnym losowaniu sprawdzamy pozycje nr 1. itd.



tak będzie przez wszystkie losowania aż do momentu gdy wreszcie pada {1,2,3,4,5,6} czyli szostka nr 1 i jeśli jest ona ostatnią długooczekiwaną szóstką to okazuje się że ilość sprawdzeń tablicy zawsze była = 1.







2010-05-29 (21:11)

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

4098
wpis nr 328 816
[ CZCIONKA MONOSPACE ]

W uzupełnieniu :



\"nastepne sprawdzenia rozpoczną się od nr 3, bo tu nie było szóstki więc nie ma potrzeby sprawdzania nr 1 i2 . \"



należy dodać :

nie tylko że nie ma potrzeby by sprawdzać nr 1 i 2 , ale by to osiągnąć to własnie :



f tab[pom]>0 then inc(pom)

else jest:=0;



konstrukcja taka to pozwala osiągnąć , ponieważ \"zamraża\" zmienną \"pom\"

po sprawdzeniu nr 2 (jest szóstka) wartość \"pom\" zostanie ziwększona - inc(pom)



natomiast po sprawdzeniu nr 3 (brak szóstki) wartość \"pom\" pozostaje taka sama \"zamrożona\".



Atutem tego rozwiązania jest fakt że pod adresem każdej z (prawie) 14mln szóstek , widnieje liczba określająca ile razy owe szóstki już wypadły.

Nie będzie tego w wersji III



Natomiast wersja III będzie zawsze raz \"sprawdzać tablicę\" czyli najszybciej.

Wersja II tylko raz sprawdza wówczas gdy ostanią szóstką jest nr1{1,2,3,4,5,6}



Różnica w czasie wykonywania będzie około 10-20%

A różnicą w czasie wykonywania programu pomiędzy wersją I a II czy III jest ogromna czyli 1000 lub więcej (raczej milion) .

wersja I może wykonywać się jak pisał TDP jeden dzień



W ogóle program nazwalam TDP



Ponieważ On go wymyślił i podał , ale jeszcze nie jest kompletny













2010-05-29 (21:35)

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

4098
wpis nr 328 830
[ CZCIONKA MONOSPACE ]

Sorry , że tak na raty piszę , ale sobota , grill ( tzw otwarcie lasu ) .



wyskoczę na 5 minut i piszę tak po kawałku , może kiedyś można to będzie sensownie na spokojnie posklejać i uzupełnić .



Brak na razie jest zainteresowania , bo sama ilość wyświetleń nie wiele mówi.



Szkoda że nie ma pytań, ale chyba jest to jednak za \"głęboki pułap\" .



Jednak osoby , które nie mają styczności z programowaniem zostały wrzucone na dość niepłytką wodę .



Ja osobiście nie mam styczności z programowaniem , ale kiedyś uczyłam się ale na razie jeszcze mimo czasu pamiętam na tyle by te podstawy spokojnie przekazać .

A i mam na tyle dobrą pamięć , że pamiętam iż dla mnie na poczatku była to katorga.

Już mam wątpliwości czy nie jest to materiał zbyt bogaty i za szybki , ale każdy kto chce , może wspomóc się kursami w necie.

2010-05-29 (23:52)

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

4098
wpis nr 328 896
[ CZCIONKA MONOSPACE ]

No i III wersja ,która powinna być zdecydowanie najszybsza, bo zawsze sprawdzamy tylko raz tablicę (ale ) :





Ale różnica jest nie ogromna , ponieważ dostęp i czas sprawdzania tablicy jest dość krótki ale na tyle znaczący że ma wpływ na czas działania programu.



Początkującego (zielonego) nie za bardzo to powinno interesować , ale albo od razu zwracać uwagę i uczyć się (mieć pojęcie o zagrożeniach), albo iść po łebkach .



W sumie nie ma złotej metody.

Albo przywiązujemy wagę do jednych czy drugich spraw , a inne pomijamy , bo wszystkiego na raz nie da się nauczyć , ba , wspomnieć tylko.



Niestety ale najpierw trzeba nauczyć się \"coś\" by coś innego można łatwiej pojąć i następnie to pierwsze \"coś\" trzeba zapomnieć , bo efektywniej jest robić inaczej.



Ale nie można nawet od razu poznać wszystkich typów zmiennych a co dopiero wszystkich a nawet części -myków .



Tutaj musimy się ograniczać do minimum.



Dlatego też , zrezygnowałam z podawania przepisu na wstawki asemblera.



Random na etapie szkolnym wystarcza, a dyskusja o generatorach pseudolosowych chyba też wyjasnia wiele
2010-05-30 (00:08)

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

4098
wpis nr 328 897
[ CZCIONKA MONOSPACE ]

Wersja III :





Tutaj po wylosowaniu X przechodzimy do sprawdzenia (if) czy TA wylosowana szóstka była wcześniej już wylosowana .



Sprawdzamy Tylko jeden adres, jedną szóstkę , czy była , czy nie.

jesli wynik to =0 , znaczy, że jeszcze tej szóstki nie było .

skoro jej nie było to :



if tab[x]=0 then begin

inc (tab[x]);

inc (jest);

end;



to >> inc (tab[x]);<< wpisze że już jest , oraz >> inc (jest);<< zakoduje że jedną już mamy



i tak aż będziemy mieć wszystkie prawie 14mln





Ale w tablicy zapisywany jest tylko fakt wystąpienia szóstki , nie ile razy wystepiła , ale że wystąpiła.
2010-05-30 (00:16)

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

4098
wpis nr 328 898
[ CZCIONKA MONOSPACE ]

Różnica między wersją III a II polega na tym co wcześniej pisałam:



wersja II koduje w tablicy ile razy każda z 14mln (prawie) szóstek wystąpiła (podobnie wersja I) a wersja III tylko koduje \"fakt wystąpienia\".



W programie jaki chciał osiągnąć TDP musimy dalej skorzystać z wersji II , ktora jak sprawdzicie jest tylko (prawie nieodczuwalnie) trochę wolniejsza.



Na razie tyle
2010-05-30 (00:26)

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

3794
wpis nr 328 899
[ CZCIONKA MONOSPACE ]

Mała zmiana w wersji III i mamy ilość wystąpień danej szóstki.



if tab[x]=0 then inc (jest);

inc (tab[x]);



2010-05-30 (00:31)

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

4098
wpis nr 328 900
[ CZCIONKA MONOSPACE ]

Mówiłam w temacie ;

http://forum.multipasko.pl/n_viewtopic.php?id=2965&last=1



że ten gość (sindbad) jest szybki i efektywny , ale dalszą część zostawię na później bo druga połówka mnie już potrzebuje , tylko nie wiem do czego



2010-05-30 (21:05)

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

4474
wpis nr 329 190
[ CZCIONKA MONOSPACE ]

Rejestracja ilości wystąpień, to za mało.



Koniecznie potrzeba rejestrować kolejność wystąpień, żeby kiedyś wreszcie można było przedstawić to graficznie.
2010-05-30 (22:26)

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

4098
wpis nr 329 223
[ CZCIONKA MONOSPACE ]

Jeśli ma być zachowana kolejność to tablica nie może mieć jednego wymiaru tab[1..13983816] a dwa wymiary przy czym ten drugi albo określamy na wyrost albo dynamicznie - zmienny rozmiar w zależności od potrzeb.



Na razie proponuje by zrobić \"Rejestrację ilości wystąpień\" a nie \" rejestrować kolejność wystąpień \"
2010-05-31 (07:15)

status Amadeus
Data rejestracji: 2009-04-30 00:00:00
Ilość postów: 820

4541
wpis nr 329 265
[ CZCIONKA MONOSPACE ]



Kurka,



Jeszcze raz przyczepię się do stosowania Pascalowego random\'a.

Ponieważ wartość RandSeed jest determinowana chwilą dnia, kiedy

odpalamy nasz program, a rozdzielczość zegara systemowego jest taka, że

mozliwych \"chwil\" jest TYLKO 1573040, to z tej małej liczby 1573040 mamy do dyspozycji jeszcze mniejszy podzbiór wartości (chyba, że siedzimy nad programem całą dobę), z czego wynika jasno, że pewne sekwencje, następstwa wartości, a nawet kombinacje NIGDY się nie pojawią z naszego generatora.

Moim zdaniem takie skrzywienie może poważnie zafałszować wyniki dociekań bazujących na Twoim programie.



Pozdrawiam!



Amadeus

2010-05-31 (07:43)

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

4474
wpis nr 329 270
[ CZCIONKA MONOSPACE ]

Amadeus ma zapewne racje i na wykresie w rzeczywistym losowaniu np. w bębnie zobaczymy coś jak meksykańskie sombrero a z generatora Kurki w najlepszym razie melonik.



Ale gorsze jest nie to, tylko fakt, że następujące po sobie sekwencje będą \"nienaturalne\".



Z drugiej strony, jeśli interesuje nas jak się zachowuje najczęstsza część populacji, to trzeba zauważyć, że powinna być dość odporna na zastosowanie generatorów. Ale to jest takie domniemanie, być może rodzaj zastosowanego generatora wypacza wyniki jeszcze bardziej, niż myślę.



Jeszcze chciałbym zwrócić uwagę, iż nie powinno się wyliczać średniej dla całej populacji, bo to prowadzi do nonsensownych wyników.



Należy wyliczać ewentualne średnie dla zakresów o przyjętej częstości wystąpień. Nas w zasadzie najbardziej interesują najczęstsze wystąpienia w jakimś przedziale częstości /w przyjętym zakresie ufności/.





Pytanie, czy nie można zastosować któregoś z podanych przez Amadeusa \"lepszych\" generatorów?
2010-05-31 (11:06)

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

4098
wpis nr 329 318
[ CZCIONKA MONOSPACE ]

Amadeus

pisaliśmy o tym że Random pascalowski jest wystarczający do celów edukacyjnych , natomiast trzeba sobie zdawać sprawę z jego pseudulosowości.



Myślę, że nawet Sindbad po przeprowadzonym doświadczeniu z grą 6z90 też zmienił zdanie - być może wcześniej nie przywiązywał wagi do tego zagadnienia .

Kilka stron poświęconych na opis jak działa generator pseudolosowy powinno początkującym uświadomić , że random jest silnie pseudolosowy a zwłaszcza Twoje wyjaśnienie po którym szczęka mi opadła



Miałam zamiar zrobić funkcję \"los\" która wykorzystuje asemblera , ale to byłoby wprowadzenie utrudnień (podobnie wykorzystanie innych generatorów których nie ma w bibliotekach freepascala) , lepiej przyjąć że do celów edukacyjnych wystarcza random .



Na razie wygląda na to że jest jedna osoba zainteresowana , ale nie wiem czy nauką czy stworzeniem konkretnego programu



następny kawałek programu :







w drugiej części sprawdzamy całą tablice przy pomocy pętli \"for\" .

pierwszy element (adres) tablicy umieszczony jest w x :

x:=tab[1];

a następnie w y jest umieszczony drugi element i następuje ich porównanie:

if x<y

większa z wartości jest umieszczana w X oraz w liczniku jest adres tej większej wartości - czyli numer szóstki.





2010-05-31 (11:19)

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

4098
wpis nr 329 320
[ CZCIONKA MONOSPACE ]

Dalsza część pokazuje ilość powtórzeń szóstek i liczebność .

W poprzedniej program sprawdził jaka ilość powtórzeń jest największa, teraz mając taką informację robimy pętlę for 1 to x - czyli jeśli największa ilość powtórzeń szóstki to 44 razy , więc pętla sprawdzi 44 kategorię a w każdej kategorii będzie różna liczebność szóstek.

















2010-05-31 (12:25)

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

4474
wpis nr 329 337
[ CZCIONKA MONOSPACE ]

\" >>wygląda na to że jest jedna osoba zainteresowana , ale nie wiem czy nauką czy stworzeniem konkretnego programu<< \"



Jedno drugiemu nie zawadza.



Brakuje teraz czegoś, co niestety generator będzie źle odzwierciedlał - przynajmniej na krańcach wykresu/tabeli.



Otóż trzeba zrobić taki szereg czasowy ilustrujący jak zmienia się ilość powtórek w czasie. Jednostką czasu jest jedno losowanie.

Czyli zaznaczamy jakieś porcje losowań, następnie w jakimś miejscu zaczynają się powtórki, potem ich ilość nieustannie się zwiększa, aż w końcu mamy same powtórki i gdzieś kiedyś pada ostatnia kombinacja.



Ponieważ generator TP jest, jak się dowiedzieliśmy, do niczego, to w rezultacie nie możemy mieć zaufania do momentu rozpoczęcia i momentu zakończenia procesu.



Ale mimo wszystko, coś się zobaczy..



To nie koniec zabawy.



Trzeba by zrobić w TP dyskryminator - program do wyławiania w podanej bazie .txt kombinacji - tych, które już były wylosowane. Ale tu ważna rzecz -wyławianie powinno dotyczyć kombinacji w zadanym zakresie. Zakres dla szóstek w DL jest wielokrotnie większy, niż w ogóle do tej pory wylosowano. Zatem w praktyce dyskryminacji podlegają obecnie wszystkie.





Teraz kwestia niewielkiego zainteresowania... To ciekawe, prawdopodobnie czytelnicy sądzą, że to jest tylko taka sztuka dla sztuki.



A wielu poszukuje systemu do gry.



Ja co prawda, jestem zainteresowany tym generatorem, jak już wcześniej napisałem, czysto przypadkowo, bo poszukuję właściwie czegoś zupełnie innego i liczyłem, że spróbujesz robić charakterystyki w TP /wykresy/. Chyba się nie doczekam...



Natomiast idąc dalej tą dziwną drogą, którą idziemy, możemy dojść bez większego problemu do interesującego \"samograja\" w DL.



Jest to dość zabawna historia. Nie będzie to jakiś szczególnie genialny niezawodny system, ale zawsze coś lepszego niż wymyślanie numerków z sufitu.



No i pewnie za chwilę pojawią się potężne słowa krytyki i personalnego ataku /jak zawsze/.
2010-05-31 (14:25)

status eMeL
Data rejestracji: 2008-11-24 00:00:00
Ilość postów: 12080

3906
wpis nr 329 379
[ CZCIONKA MONOSPACE ]

Witam



U mnie nie wyświetla się w oknie początek wyniku obliczeń. Za każdym razem ukazuje się tyle wierszy, choć na początku ładowania widać początek. Co to może być?



2010-05-31 (16:04)

status starak
Data rejestracji: 2005-09-29 00:00:00
Ilość postów: 141

1269
wpis nr 329 396
[ CZCIONKA MONOSPACE ]

Witam,jest na pewno więcej zainteresowanych ale ja na przykład mam kłopot z uruchomieniem Fre Pascala system Vista a na drugim kompie windows 7,Czy to jest problemem?.Programy przepisuję wydaje się dosłownie i po run błędy np syntax error,\":\" espected but \" identyfier Writeln\" found Lub \"Close\"Pozdrawiam
2010-05-31 (17:28)

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

4098
wpis nr 329 426
[ CZCIONKA MONOSPACE ]

Muszę poczytać o free pascalu by rozwiązać te problemy , ja mam xp32bit więc w systemach operacyjnych 64bit pewnie nie działa ta wersja freepascala z linku który podawałam i należy poszukać wersji freepascal 64bit.



http://www.x64bitdownload.com/downloads/t-64-bit-free-pascal-download-fzhnazjp.html

może to będzie oki dla visty 64bit
| Dodaj wpis w tym temacie | Spis tematów | Wyniki lottoStrona: 1 2 ... 12 13 14 ... 30 31
Wyślij wiadomość do admina