Oldal: 1 / 1
[Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 16., kedd 21:08
Szerző: illuziovilag
Tisztelt Office Szakik!
Hobbim a statisztika alapú Kenózás. (A Kenó egy 80/20-as struktúrájú lottó fajta.) Ezzel kapcsolatban támadt egy ötletem aminek szeretnék utánajárni a gyakorlatban is.
Ehhez meg kéne viszgálni azt, hogy az elmúlt félév nyerőszámaiból legutóbb mikor fordult elő egy 3 számból álló kombináció. Odáig tudtam eljutni, hogy a múlt félév nyerőszámait (186 sor) és az összes lehetséges számhármast (82160 sor) külön külön munkalapra másoltam. Az lenne a cél, hogy a számhármasok melletti E oszlopban legyen az, hogy az adott számhármas mikor (melyik sorban) fordult elő legutóbb a nyerőszámokban. Tehát nem feltétlenül kell az összes előfordulást regisztrálni, csak azt ami a jelenhez legközelebb történt. A kérdésem az, hogy hogyan lehetne ezt LibreOffice-ban vagy OpenOffice-ban megoldani?
A Google Drive-ra feltöltöttem az ODS filet:
https://drive.google.com/file/d/1Wnor2r ... p=drivesdk
Előre is hálásan köszönöm a segítséget!
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 17., szerda 0:17
Szerző: Zizi64
Így elsőre a makrós megoldás látszik a legkivitelezhetőbbnek.
Átadod a makródnak az egész "nyerőszámok" táblát (a kitöltött részét), és az egyik számhármast, majd a számhármas mindegyik tagjának létezését végigellenőrzöd a sorokban. Nyilván lassú lesz a rutin, ha a "fölösleges részt" is végigellenőrzöd.
A sorba rendezett forma a segítségedre van: Mindjárt a következő sor vizsgálatára lehet ugrani, ha a számhármas valamelyik tagját keresve a nyerőszámok egy sorában nagyobb számhoz érsz anélkül, hogy vele egyezőt találnál.
És mivel a számhármasok is szigorú emelkedő sorrendűek az ismétlődés-mentesség miatt (van "1-2-3", de nincs szükség a "3-2-1", "1-3-2", stb kombinációkra), ezért, ha az első elemet megtaláltad egy sorban, akkor a második elemet már nem kell a sor elejétől keresned, elég az első szám találati helyétől...
Ha mind a három számot megtaláltad, akkor a rutinod (függvényed) visszatérhet a sor relatív sorszámával (ha csak az első előfordulást keresed). Mivel a táblád a munkalap első sorában kezdődik, a visszatérési érték egyben az abszolút sor-szám is lesz egyben. (egyébként egy eltolás-értékkel korrigálnod kéne...). Arra vigyázz, hogy a makrókon belül és a cellákban az "első" kifejezés az 0.-at vagy 1.-t is jelenthet.
Ha az összes előfordulást keresed, akkor célszerű számolni a hármas egyezéseket, és az összeggel visszatérni.
Van mód persze arra is, hogy "tömb" változót adj vissza visszatérő értékként, és abban több sor-számot (ahol hármas egyezés van). (ekkor "tömbfüggvénnyé" válik a függvényed, tehát pont ugyanúgy kel majd használnod, mint a beépített tömbfüggvényeket.Persze meg kell saccolnod, hogy vajon mi lehet az egyezések várható maximális száma... (Vagy vessző-szóközzel elválasztott szöveges értékekké (egyetlen stringgé) konvertálni a sor-számokat, és egyetlen változóban visszaadni.)
Persze nem tudom, hogy a makrós megoldást meg tudod-e valósítani, azaz értesz-e a makróprogramozáshoz.
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 17., szerda 6:21
Szerző: illuziovilag
Köszönöm a gyors választ, megpróbálom!
Este jelentkezem hogy sikerült-e.
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 17., szerda 8:36
Szerző: Zizi64
Jobban belegondolva, EGY számhármast még viszonylag normális idő alatt végig fog ellenőrizni a rutin, de 80000+ darab számhármas végigellenőrzéséhez már tetemes idő kell. Nem több másodperc, hanem több ÓRA (esetleg több nap), legalábbis Basic értelmezővel dolgozva. Főleg a nagyobb számok esetében, ahol több nála kisebbet kell "végignyálazni" a programodnak.
Meglehet (sőt valószínű), hogy valami más programozási rendszerben, formázatlan .csv fájlokból dolgozva jóval gyorsabb lehet a folyamat.
Még itt is lehet persze "trükközni": a számhármasoknak a számtartomány (1-80) felénél nagyobb tagjait ne a sor elejétől, hanem a VÉGÉTŐL kezdd el keresni... (nyilván a "fölösleges tartományból történő" kilépési reláció is megfordul ekkor).
...Vagy ne akard mind a 80000+ számhármashoz tartalmazó eredményt egyetlen munkalapon megjeleníteni. Válassz ki egy számhármast, vagy (maximum tízet), és csak azt/azokat vizsgáld "egy menetben".
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 17., szerda 10:09
Szerző: illuziovilag
Köszönöm a korrekciót!
Még nem jutottam semmire mert a Pallay könyvben ami itt ajánlva van nem találtam meg a makrókat.
Egy ismerős az Excel VBA-a használatát javasolta. Libre Office-ban nincs hasonló?
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 17., szerda 19:27
Szerző: Zizi64
Egy ismerős az Excel VBA-a használatát javasolta. Libre Office-ban nincs hasonló?
De van. A Makrók maguk azok. Csak nem a Makrórögzítővel rögzíthető makrókat kell most ez alatt értened, hanem a StarBasic programnyelvet, és az API függvények és eljárások meghívását a StarBasic kódból.
a Pallay könyvben ami itt ajánlva van nem találtam meg a makrókat.
...Háát, konkrétan ez a feladat biztosan nincs kidolgozva egyik könyvben sem.
A LibreOffice alapvetően abban különbözik az Exceltől, hogy a LO programcsomag tudását nem egyetlen programnyelvből (a nyelvbe magába beleágyazott, csakis abban használható utasításokkal) tudod vezérelni, hanem bármely támogatott programnyelvből. A LO pedig felkínálja az API függvények és eljárások ezreit, amivel a programot vezérelheted, és amiket bármelyik programnyelvből meghívhatsz.
API: Application Programming Interface
Viszont a LO/AOO API-ja MINDENBEN különbözik azoktól az eljárásoktól, amik az Excel VBA-jába mereven be vannak ágyazva.
Ennek ellenére a LO KÉPES a VBA makrók EGY RÉSZÉNEK a futtatására, csupán a kompatibilitási opciót kell bekapcsolni a Basic kódban. (FORDÍTOTT IRÁNYBAN természetesen NINCS átjárás, mert a Microfost-nak nem érdeke a kompatibilitás!!!) De NEM JAVASLOM, hogy rászokj arra, hogy VBA kóddal barkácsolj a LibreOffice-on belül.
Andrew Pitonyak ingyenes makróprogramozási könyvei nekem sokat segítettek:
https://www.pitonyak.org/oo.php
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 17., szerda 20:47
Szerző: Zizi64
Itt az én javaslatom kódba öntve. A kód a dokumentumba beágyazva... Sok számhármas keresése esetén nagyon lassú!!!
(a For..Next ciklusokból "menet közben történő" kiugrás nem túl elegáns, de most csak ez jutott eszembe. Egyéb típusú ciklussal elegánsabb lenne.)
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 17., szerda 23:28
Szerző: illuziovilag
FANTASZTIKUS, MŰKÖDIK!
Ha statisztika segítségével nyerek, küldök belőle!
Egy kérdés: ha a nyerőszámok listáját bővítem újabb, illetve régebbi eredményekkel (mivel a sárga oszlopban látok jó pár 0-ás értéket) akkor ezek automatikusan figyelembe lesznek véve, és a sárga oszlop értékei automatikusan frissülnek?
Üdvözlettel
Dávid
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 17., szerda 23:34
Szerző: Zizi64
Ha úgy szúrod be a sorokat, hogy azok tényleg HOZZÁADÓDJANAK a névvel rendelkező tartományhoz, akkor az újabb sorokban is vizsgálódni fog a makró. De ez azt is jelenti, hogy egyre lassabb lesz!
(Ha nem úgy szúrod be (hanem az új sor "kívül marad" a nevezett tartományon) akkor is van lehetőséged a nevezett tartomány cellatartomány-hivatkozását szerkeszteni, hozzáigazítani az új helyzethez.
Mindig legyen egy olyan másolatod a fájlból, amiben csak kevés számhármast kerestetsz! (Mert különben várhatod, hogy mikorra végez a makród, és esetleg egy erőltetett bezárásnál ("lelövésnél") meg is sérülhet!)
Re: Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 18., csütörtök 10:54
Szerző: illuziovilag
Azt hiszem értem!
Ha mégsem, majd kérdezek.
Amúgy eddig maximum 5 percet kellett várnom valamely változtatásnál, szóval ez nem vészes, pedig már mind a 82 ezer variáció aktív.
Kíváncsi vagyok, hogy mennyi időt vett igénybe számodra a "program" megírása összesen? Nem tudom felmérni, mert rájöttem hogy csak kezdő szinten vagyok.
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 18., csütörtök 12:35
Szerző: Zizi64
Kíváncsi vagyok, hogy mennyi időt vett igénybe számodra a "program" megírása összesen?
Pár óra, MOST.
De ÉVEK, a tanulási folyamattal együtt.
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 18., csütörtök 14:22
Szerző: illuziovilag
Ha számhármasok helyett számpárokat akarok keresni, akkor egyszerűen csak töröljek ki egy oszlopot a számhármasok közül és írjam át a számokat ahol kell? Vagy inkább az egyik oszlop celláiban lévő összes számot töröljem ki?
Azóta megpróbáltam mindkét módszert, de nem megy mert kiírja, hogy ezek védett cellák. Hogyan tudok tehát számpárokra keresni?
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 18., csütörtök 21:24
Szerző: illuziovilag
Valahogyan mégis sikerült kitörölnöm a hármas kombinációk egyik oszlopának összes értékét. Így viszont már nem működik az egész.
Nyitottam egy új munkalapot amibe bemásoltam a 2415 db kettes kombinációt. Ezt kéne valahogy használni.
Annyi még a változás hogy 80-asról 70-es játéktípusra váltottam. Így legalább kevesebb a kombinációk száma is.
Feltöltöttem a filet:
https://drive.google.com/file/d/1X6ghPd ... p=drivesdk
Előre is köszönöm a segítséget!
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 19., péntek 0:38
Szerző: Zizi64
Működik az, csak nem talál egyezést, hiszen MINDENKÉPPEN három számot keres a makró, ahol a harmadik szám minden pozícióban 0 ( vagy "semmi": NA() ), ami BIZTOSAN nem szerepel a kihúzott nyerőszámok között.
Azt gondolom, hogy a három egymásba ágyazott ciklusból KETTŐT csinálni nem olyan nehéz feladat, hogy egyedül ne tudnád megvalósítani. hiszen csak törölni kell néhány lépést az eredeti makrómból és kevesebb paramétert kell átadni a makró meghívásakor.
(Természetesen hibafigyelésekkel is neked kell ellátni, azaz "hülye-biztossá" neked kell tenni a makrót. Én nem írtam bele semmi olyan funkciót, ami megakadályozza, hogy rossz/kevesebb/több átadott adat esetén jelezzen, hogy probléma van; és hogy ilyenkor ne kerüljön esetleg végtelen ciklusba.)
Ha ez nem megy, akkor nem makrókkal kell megoldanod a feladatot, vagy neki kell ülnöd és tanulnod kell a makróprogramozást. Minden változatot ugyanis NEM CSINÁLHATOK MEG helyetted.
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 19., péntek 0:41
Szerző: Zizi64
Ha nálad (sem) nyílik meg az elrontott fájl emberi időn belül, akkor NE engedélyezd a makrók futását (közepes makróbiztonsági szint mellett) és úgy nyisd meg a fájlt. Ekkor törölni tudod a 80000+ makróhívási képletet, és nekikezdhetsz az átalakításnak.
Vagy vedd elő újra az előzőleg ide általam feltöltött fájlt, és azt kezdd el "buherálgatni".
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 19., péntek 10:58
Szerző: illuziovilag
Köszönöm, megpróbálom!
Makrókkal kapcsolatban tudsz valami jó oktató anyagot?
Amúgy nem lenne több verzió mert pl a számnégyesekre nincs értelme keresni mert túl sok van (másfél millió) és túl nagy kimaradásokkal jönnek.
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 19., péntek 12:36
Szerző: Zizi64
Amúgy nem lenne több verzió mert pl a számnégyesekre nincs értelme keresni mert túl sok van (másfél millió) és túl nagy kimaradásokkal jönnek.
Én a helyedben csak azokat a számketteseket, -hármasokat vagy -négyeseket vizsgálnám, amit ÉPPEN AKKOR meg akarsz játszani.
Makrókkal kapcsolatban tudsz valami jó oktató anyagot?
Persze, tudok:
- Andrew Pitonyak ingyenes makróprogramozási könyvei (Biblia az AOO/LO programozáshoz!!!)
https://www.pitonyak.org/oo.php
- A StarBasic Helpje. ( Az AOO/LO makróprogramozási leírásainak szinte mindegyike - érthető okokból - NEM a Basic alapparancsaival foglalkozik, hanem az API függvényeivel. A ciklus-képző utasításokat, a változótípusokat, azok megadását, stb... már ismerned kell, mert azok nagyon hasonlóak minden Basic nyelvjárásban. Ezt nem írja le senki századszor is. Az Objektumorientált programozás lényegét szintén ismerned kell, mert jó néhány évtizede így működnek a magasabb szintű nyelvek fejlesztő környezetei. Már a Win 3.1-hez kiadott TurboPascal Windows is így működött, de már előtte is ez volt az általános(abb).
- A programozási objektumok vizsgálatához célszerű (erősen ajánlott) feltelepíteni egyet a nagyszerű (harmadik féltől származó) objektumvizsáló kiterjesztések közül (XrayTool, MRI):
https://extensions.openoffice.org/en/pr ... ction-tool
https://berma.pagesperso-orange.fr/index2.html
- Az angol fórum és az AskLO témái. Rengeteg mintakód van a közös AOO/LO fórumokon (A magyaron és az angolon kívül egyéb nyelvű fórumok is vannak.)
https://forum.openoffice.org/en/forum/index.php
https://ask.libreoffice.org/en/questions/
- Az API leírások. Ez "száraz anyag"; szinte csak az API függvények listája, csak az érti, aki az alapokkal tisztában van.
https://www.openoffice.org/api/
https://api.libreoffice.org/
- ...És persze a Gooooooooooogle!!!!!
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 19., péntek 23:34
Szerző: illuziovilag
Köszönöm szépen a sok infót!
Sajnos egyáltalán nem értek a programozáshoz és nem is csináltam soha, de megpróbálom.
Elnézést ha nagyon leterheltelek!
Mint írtam, ha nyerek, küldök belőle!
Üdvözlettel
Dávid
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 20., szombat 13:02
Szerző: illuziovilag
Megnéztem az ajánlott anyagokat. Rájöttem hogy igaz az amit írtál, hogy több év ezt megtanulni. Ugyanakkor mégiscsak jó lenne a számpárokat megvizsgálni a külföldi 20/70-es kenókon mert itt több az esély mivel kisebb a variancia. A számhármasok file-át 70-esre át tudtam állítani, működik, a historikus adatokat bővítem. A számpárok 70-es verziója viszont sehogy sem megy, ebben ha tudnál segíteni:
Előre is köszönöm!!
Üdvözlettel:
Dávid
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 20., szombat 13:31
Szerző: Zizi64
Persze, hogy "nem működik" (nem ÚGY működik, ahogy azt te elvárod), mert még mindig 3 ciklus van egymásba ágyazva a makróban "j", "k", "l" ciklusváltozókkal. A makrón tehát még semmit se változtattál.
Az egyik ciklust (a harmadikat, a 3-as index-számot használó, "l" ciklusváltozójút) meg kell szüntetned; de úgy, hogy bizonyos funkcióit (a találat kiértékelését) át kell tenned a második ciklusba, hiszen most már az lesz az "utolsó".
Látod egyáltalán a makrókódot?
Tudod, hogy hol van eltárolva?
Tudod, hogy hogyan kell szerkeszteni a makrókódot?
Re: [Megoldva] Nyerőszámok statisztikai vizsgálata
Elküldve: 2021. február 20., szombat 15:38
Szerző: Zizi64
"Első lecke":
Kezdd a Basic nyelv történetének és alapjainak a megismerésével:
https://hu.wikipedia.org/wiki/BASIC
Az itt leírtak kb. 95%-ban igazak a mai StarBasic-re is.
A "Star" előtag még abból az időből származik, amikor a LibreOffice elődjét még StarOffice-nak nevezték, a Office csomag futtatható állományának a mai napig "soffice" a neve:
https://en.wikipedia.org/wiki/LibreOffice#History )
A programsorok számozása természetesen már nem divat, a LO kódszerkesztőjében megjelenő számozás NEM használható vezérlésre, csakis a szerkesztő személyek számára ad támpontot.
A hibakezelésen kívül (amikor a hibakezelő részhez "ugrasztjuk" a programot), gyakorlatilag már TILOS a GOTO parancs használata.
A GOSUB-ot se használjuk, mert amire ugranánk, azt a kódrészletet KÜLÖN szubrutinként megírva, csupán a rutin nevével hivatkozhatunk rá (hívhatjuk meg, ugorhatunk oda).
A példafájlunkban lévő makró kódját így tudod megjeleníteni:
Eszközök - Makrók - Makrók szerkesztése - keresd a bal oldalon a fájl nevét kattintással menj bele a fájl Standard könyvtárába, és a Module1-be. Ilyen modulokban tudod tárolni a makrókódokat. Az azon belül látható nevek már a megírt függvények és eljárások (rutinok) nevei.
- Katt! a képre, ha élesebb nézetet akarsz.
Vigyázz mert "Standard" könyvtárból adott esetben többet is találsz. Egy, ami a programcsomagé (a MyMacros/Saját makrók alatt). Ide kerülnek azok a makrók, amiket MINDEN dokumentumból el szeretnél érni. És az egyes dokumentumoknak is van Standard könyvtára. Ide azok a makróknak kell kerülni, amiket csakis az adott dokumentumból akarsz elérni.
A dokumentumban tárolt makrók előnye, hogy a dokumentum - bárhová is küldöd -, viszi magával a kódot. És ez a hátránya is. A programcsomag alá betett makróknak meg pont fordítva.
A Standard könyvtárakban eltárolt makrókról még azt kell tudni, hogy azok automatikusan betöltődnek a memóriába a programcsomag elindításakor, vagy az adott fájl megnyitásakor. Ha más néven csinálsz KÖNYVTÁRAT (Library-t) akkor azoknak a betöltéséről neked kell gondoskodni. Ezért az első időben csakis a Standard nevű könyvtár(ak)ba helyezz makrókat.
A Modulokat viszont már mindenképpen neked kell létrehozni. Ha van már egy, akkor magából a szerkesztőből tudsz beszúrni újabbat a modul alsó fülén kattintva.
Ha még egy sincs, akkor az Eszközök - Makrók - Makrók rendezése - Basic menüpontban tudsz létrehozni "Új"-at.
Ha a makrószerkesztőben nyomsz F1-et, akkor kifejezetten a Basic-IDE-hez és a Basic nyelvhez kapcsolódó Help-et nyitja meg. API helpet itt nem kapsz.
IDE : Integrated Development Environment (beépített fejlesztői környezet), amiben a kódot írod, és ami hibaüzenetet tud neked küldeni a programod futása közben fellépő hibákról. Ilyen csak a StarBasic-nek van a LO-n belül. Más támogatott programnyelvnek nincs ilyenje, azaz programot írhatsz más nyelven is, de ilyesfajta "segítséget" nem kapsz hozzá a LibreOffice-től.
API : Application Programming Interface (az alkalmazás programozói felülete) - ez a függvények és eljárások ezreit jelenti, amiket meghívhatsz egy Basic kódból, vagy bármely más támogatott programnyelvből, és amivel magát a programcsomagot vezérelheted.