You are on page 1of 47

ZAVOD ZA ELEKTRONIKE SUSTAVE I OBRADU INFORMACIJA FAKULTET ELEKTROTEHNIKE I RAUNARSTVA SVEUILITE U ZAGREBU

Sluajni procesi u igrama na sreu

Kreimir avar Damir Grdeni Igor Kabi Marijana Milas Dejan Nagradi Dario Zurovec

Zagreb, prosinac 2010.

Sadraj

1. 2.

Uvod ................................................................................................................................................ 1 Generator sluajnih brojeva ............................................................................................................ 2 2.1 2.2 Vrste najpopularnijih igara na sreu........................................................................................ 3 Generatori sluajnih brojeva ................................................................................................... 5 Generatori pseudosluajnih brojeva ............................................................................... 7 Hardverski generatori sluajnih brojeva........................................................................ 18

2.2.1 2.2.2 3. 4. 5. 6.

Slot machines ................................................................................................................................ 19 Zakljuak ........................................................................................................................................ 27 Literatura ....................................................................................................................................... 28 Prilog (programski kod u Matlabu) ................................................................................................ 29

1. Uvod
U dananje je vrijeme najnormalnija stvar prije posla, ruka, nastave ili predavanja otii u sportsku kladionicu, ili pak uplatiti listi lutrije ili neke druge igre na sreu. Sve te kue na vrlo jednostavan i lak nain namame gotovo svakog prosjenog stanovnika da barem jednom uplati listi i okua sreu. ovjek se zanosi eljom za velikom dobiti kojom bi rijeio svoja osnovna ivotna pitanja, ili barem konano ostvario neke svoje snove i elje iz djetinjstva. Osim toga, poput zarazne bolesti, iz dana u dan raste i broj kua s razliitim igraim aparatima koje takoer znaju kako svojim vrlo privlanim ponudama privui onog najslabijeg. No problem je u svemu tome i to to vrlo esto takvi na poetku samo povremeni odlasci na kraju izazovu pravu ovisnost kod ljudi.

Prema podacima Ministarstva financija, tijekom 2006. godine su za vrijeme Svjetskoga nogometnog prvenstva, graani Republike Hrvatske u kladionicama uplatili 412,6 milijuna kuna. U Hrvatskoj je 2009. godine 13 trgovakih drutava imalo koncesiju za prireivanje klaenja na 2005 uplatnih mjesta, to je 200 vie nego 2005. godine. Na 2000 graana, dakle, dolazi po jedno uplatno mjesto. Kad bi se tome pribrojile druge igre na sreu, kao to su lutrija i sportska prognoza, te automat klubovi i ostali legalni i ilegalni prostori za igre na sreu, onda je zapanjuju velik broj mjesta i osoba koje se bave ovim, moemo to tako rei, unosnim zanatom. A bave se time upravo zato to postoji velik broj zainteresiranih za klaenja i igre na sreu, velik broj onih koji ekaju da im se posrei i da konano dobiju. A kad se onim nekoliko stotina milijuna kuna koji se okrenu samo za vrijeme svjetskog prvenstva pridoda i sav onaj novac to tijekom cijele godine prolazi kroz kladionice, lutrije, sportske prognoze, automate, onda su to nevjerojatni iznosi. Postavlja se pitanje da li je sve to sluajnost ili postoji barem mali dio koji je namjeten i ne-sluajan? Mnoge teorije kolaju meu obinim smrtnicima, a u ovom radu probat emo dati objektivan uvid u to koliko te teorije imaju jasnu pozadinu, te koliko su svi procesi i sva zarada uistinu sluajni.

2. Generator sluajnih brojeva


Generator sluajnih brojeva se koristi kod veine igara, kao to su to poker automati, bingo, slot machine, lutrija, sportske kladionice, virtualne konjske utrke. Sve se radi sa koeficijentima koji se izraunavaju iz neke procjene vjerojatnosti. Svaki dogaaj ima svoj koeficijent, te sukladno tome dobitak. Ljudi se zapravo klade na dogaaj to je vjerojatnost dogaaja manja, koeficijent je vei. Prave konjske utrke, lutriju i stari mehaniki automat slot machine zamijenila su raunala koja upravo na osnovu generatora sluajnih brojeva izbacuju kombinacije. Rane lutrije su svoje korisnike drale u neizvjesnosti izvlaenjem brojeva ili kupona iz spremnika. U Velikoj Britaniji, broj izvlaenja Premium obveznica (koje nisu strogo lutrija, ali koriste vrlo slian pristup) su generirane od strane elektronikog stroja zvanog Ernie. Hardverski random generator je klasini generator pseudosluajnih brojeva, izbacuje kombinacije brojeva koje djeluju sluajno, no sve je zapravo matematika funkcija. Definiraju se iterativno, ako se zna prvi, zna se svaki sljedei, nema mehanizma, certificirani, prolaze komisije. Bitno je seed-anje, gdje je prvi broj uvijek neka sluajna vrijednost, bez logine pozadine, najee neki proces koji je sluajan, npr. bijeli um, oscilacije napona. Takvi su generatori sluajnih brojeva bolji jer su u pravom smislu sluajni. Digitalni potpis u kriptografiji je isto na neki nain generator pseudosluajnih brojeva. Generira se tajni klju, npr. micanje mia da izgenerira klju, izraunavaju se koordinate i to je traena sluajna kombinacija.

2.1 Vrste najpopularnijih igara na sreu


Slot machine je stari mehaniki automat, s rukicama, kotaem i zupanicima, te ekranom sa tri simbola. Na ekranu je posloeno 1003 slika, automat nema povijest, i podeava se dobitak od 90%. Generator sluajnih brojeva generira neki sluajan broj i ovisno o njemu raunalo izbacuje kombinaciju slika. Ta se kombinacija podeava na 90% dobitnih kombinacija. Rulet je jedna od najpopularnijih igara na sreu. Legenda govori da je Blaise Pascal koristio rulet kao metodu odreivanja vjerojatnosti. Meutim, sama igra se prvi put spominje 1796. godine u Parizu. Prednost kue

Svi omjeri isplata u ruletu napravljeni su s obzirom na mehanizam koji odabire izmeu 36 brojeva + 0 (+ 0). Kako je na kotau ruleta 37 ili 38 brojeva, kua u svakoj okladi ima jednaku prednost: 2,70% u europskom ruletu s jednom nulom ili 5,26% u amerikom ruletu s obinom i dvostrukom nulom. To znai da u europskom ruletu na svakih 100 oklaenih EUR-a igra moe oekivati povrat od 97,30 EUR-a, a u amerikom ruletu povrat od 94,74 EUR-a. Dugorono to znai da je kua u plusu. Nema fizikog namjetanja kotaa ve se namjetaju koeficijenti za dobit. Baccarat je kartaka igra na sreu francuskog podrijetla koja se igra pomou 6 ili 8 francuskih pilova od po 52 karte izmijeanih zajedno. Igra je popularna u kockarnicama, a najee su varijante: punto banco (amerika verzija) i chemin de fer (francuska verzija). U baccaratu se igra i bankar natjeu za bolji rezultat. Tko od kue i igraa predstavlja koga, ovisi o varijanti igre.

Varijanta punto banco je nekako najea varijanta igranja baccarata. U ovoj varijanti banka predstavlja i igraa i bankara. Igra i bankar imaju tono definiran nain igre, poput djelitelja u blackjacku, ime se gotovo eliminira element vjetine. Objema ulogama upravlja krupje, a igrai prije dijeljenja postavljaju oklade na igraa (isplauje 1:1), bankara (uzima 5% komisije na pobjedu pa je stvarna isplata 0.95:1), ili remi (isplata 8:1). Unato komisiji, uloga bankara ima malo manju prednost kue nago uloga igraa (1,17% prema 1,36%). Meutim, prednost kue kod uloga na remi je ak 14,44%. Blackjack (kao i ajnc) je kartaka igra na sreu, takoer vrlo popularna u kockarnicama. Poznata je kao jedna od malobrojnih igara na sreu protiv kue u kojima igra moe stei statistiku prednost nad kockarnicom. Kao to je to sluaj sa veinom igara, zna se koliko je dobitnih kombinacija, oko 90% se vraa igraima, nikada 100%.

2.2 Generatori sluajnih brojeva


Generator sluajnih brojeva (RNG, engl. Random Number Generator) je raunalni ili fiziki ureaj dizajniran za generiranje niza brojeva ili simbola koji se pojavljuju bez odreenog pravila, odnosno pojavljuju se sluajno. Mnoge primjene sluajnosti su dovele do razvoja nekoliko razliitih naina za generiranje sluajnih podataka. Mnogi od njih su postojali od davnina, ukljuujui i kocke, bacanje novia, mijeanje karata, upotreba stolisnika stabljike (za gatanje) u I Ching, i mnoge druge tehnike. Zbog mehanike prirode tih tehnika, za generiranje velikih koliina dovoljno sluajnih brojeva (vano u statistici) je bilo potrebno puno rada i vremena. Dakle, rezultati bi ponekad bili prikupljani i distribuirani kao sluajne tablice. Danas, nakon dolaska raunalnog generatora sluajnih brojeva, sve vei broj lutrija, i igara na sreu, koriste RNG umjesto tradicionalne metode za crtanje, kao to je koritenje ping-pong ili gumene loptice. RNG se takoer danas koristi za odreivanje vjerojatnosti modernih automata. Postoji nekoliko raunskih metoda za generiranje sluajnih brojeva . Generator pseudosluajnih brojeva (PRNG), takoer poznat kao deterministiki generator sluajnih bitova (DRBG), algoritam je za generiranje niza brojeva koji aproksimira svojstva sluajnih brojeva. Redoslijed nije sluajan po tome to u potpunosti odreuje relativno mali skup poetnih vrijednosti, pod nazivom PRNG stanje. Iako sekvence koje su blie pravim sluajnim brojevima mogu biti generirane koristei hardver generator za sluajni brojeve, pseudosluajni brojevi su vani u praksi za s imulacije (npr., fiziki sustavi s metodom Monte Carlo), i sredinji u praksi kriptografije i proceduralne generacije. U raunarstvu, hardverski generator sluajnih brojeva je ureaj koji generira sluajne brojeve iz fizikalnih procesa. Takvi ureaji se esto temelje na mikroskopskim fenomenima koji generiraju niske razine, statistiki sluajni um signala, kao to su toplinski um ili fotoelektrini efekt ili druge kvantne pojave. Ovi procesi su, u teoriji, potpuno nepredvidljivi, te teorije tvrdnje nepredvidivosti su predmet eksperimentalnog ispitivanja. Kvantno-baziranim hardverom, generator sluajnih brojeva obino se sastoji od senzora, odnosno pretvornika koji pretvara fizike pojave u elektrini
5

signal, pojaala, te ostalih elektronikih sklopova, i neke vrste analogno/digitalnog pretvaraa za pretvorbu u digitalni broj na izlazu, esto jednostavno binarnu znamenku 0 ili 1. Uzorkovanjem sluajnog signala na izlazu, dobivamo niz sluajnih brojeva. Hardverski generatori sluajnih brojeva razlikuju se od generatora pseudosluajnih brojeva, koji se obino koristi u veini raunala. Generatori pseudosluajnih brojeva koriste deterministiki algoritam za izraunavanje numerikog niza. Iako ti pseudosluajni nizovi prolaze statistiki uzorak testova za sluajnosti, ako nam je poznat algoritam, brojevi se mogu predvidjeti. Stoga generatori pseudosluajnih brojeva nisu pogodni za kriptografske aplikacije, jer su oni osjetljivi na kriptoanalitiki napad. Tako se u visokim sigurnosnim aplikacijama, poput generiranja sluajnih kljueva za vojne i poslovne sustave ifriranja, koristi hardverski generator sluajnih brojeva. Generator sluajnih brojeva takoer moe biti izgraen iz sluajnih makroskopskih procesa, koritenjem kovanica, kocke, ruleta i lutrijskih automata. Prisutnost nepredvidivosti u tim pojavama mogu opravdati teorije nestabilnih dinamikih sustava i teorije kaosa. Iako su makroskopski procesi deterministiki, kao plod Newtonove mehanike, izlaz dobro dizajniranog ureaja, poput ruleta, ne mogu se predvidjeti u praksi, jer to ovisi o mnogo mikro-detalja kod poetnih uvjeta pri svakoj uporabi. Kocke su uglavnom bile koritene za kockanje, ali u novije vrijeme se koriste i kao nasumini elementi u igrama (npr. igre igranja uloga), a viktorijanski znanstvenik Francis Galton opisao je nain koritenja kocke za izriito generiranje sluajnih brojeva za znanstvene svrhe jo 1890. Hardverski generatori sluajnih brojeva su esto relativni spori, i mogu proizvesti pristran slijed (odnosno neke vrijednosti su ee od drugih).

2.2.1 Generatori pseudosluajnih brojeva


2.2.1.1 Blum Blum Shub

Blum Blum Shub algoritam ima sljedei oblik: Xn+1 = xn2 (mod M), gdje je M = pq umnoak dvaju prostih brojeva p i q. U svakom koraku algoritma, izlazi su izvedeni iz Xn+1. Izlaz je ili bit pariteta od Xn+1 ili jedan ili vie najmanje znaajnih bitova od Xn+1. Seed x0 bi trebao biti cijeli broj koji nije 1 ili djeljiv s M. Oba prosta broja p i q bi trebala biti kongruentna 3 (mod 4), to jami da svaki kvadratni ostatak ima jedan korijen koji je takoer kvadratni ostatak, i najvei zajedniki djelitelj ((p-1), (q-1)) bi trebao biti mali (to ini duljinu ciklusa veom). Zanimljiva karakteristika BBS generatora je mogunost izraunavanja bilo koje vrijednosti xi izravno iz Eulerovog teorema. Generator nije prikladan za upotrebu, osim za kriptografiju (RSA enkripciju) jer je vrlo spor. Ali je zato vrlo siguran, to se povezuje sa injenicom da je dovoljno kvalitetan upravo za kriptografske zahtjeve.

2.2.1.2 Inverzni kongruentni generator

Inverzni kongruentni generator je vrsta nelinearnog kongruentnog generatora pseudosluajnih brojeva, koji koristi modularni multiplikativni inverz (ako on postoji) kako bi izgenerirao sljedei broj u nizu. Standardna jednadba za in verzni kongruentni generator je: Xi+1 (aXi-1 + c) (mod m), gdje je 0 < Xi < m.

2.2.1.3 Linearni kongruentni generator

Linearni kongruentni generator je jedan od najstarijih i najpoznatijih algoritama generatora pseudosluajnih brojeva. Teorija koja stoji iza ovog generatora je jednostavna za razumijevanje, pa je stoga i njihova implementacija jednostavna i brza. Generator je definiran kao rekurzija cjelobrojnih konstanti koje odreuju generator:

Xn+1 = (aXn + c) (mod m), gdje Xn predstavlja niz pseudosluajnih vrijednosti, m je modul, m > 0, a je parametar mnoenja (multiplikator), 0 < a < m, c je poveanje, c 0 < m, i X0 je seed ili poetna vrijednost, X0 0 < m.

Prednosti i nedostaci linearnog kongruentnog generatora Linearni kongruentni generatori su brzi i zahtijevaju minimalno memorije (tipino 32 ili 64 bita) kako bi zadrali stanje. To ih ini upotrebljivim za simulaciju vie nezavisnih slijedova. LK generatori se ne bi trebali koristiti za aplikacije gdje je sluajnost visoke kvalitete kritina. Na primjer, nisu prikladni za Monte Carlo simulaciju zbog serijske korelacije (izmeu ostaloga). Oni se takoer ne bi trebali koristiti za kriptografske aplikacije. Ako je linearni kongruentni generator seed-an znakom, a zatim jednom ponovljen, rezultat je jednostavna klasina ifra nazvana afina ifra. Ova se ifra lako razbije standardnom frekvencijskom analizom.

LKG imaju tendenciju izlaganja nekim ozbiljnim nedostacima. Na primjer, ako se LKG koriste za odabir toaka u n-dimenzionalnom prostoru, toke e leati na, u veini sluajeva, m1/n hiperravnina (Marsaglia-in teorem). To je zbog serijskih korelacija izmeu uzastopnih vrijednosti slijeda Xn. Spektralni test, koji je zapravo jednostavan test LKG kvalitete, temelji se na upravo na toj injenici. Daljnji problem LK generatora je u tome to bitovi nieg reda generiranog slijeda imaju daleko krai period nego cijeli niz, ako je m potencija broja 2. Uglavnom, n-ta najmanje znaajna znamenka u prikazu izlaznih sekvenci sa bazom b, gdje je Bk = m za neki cijeli broj k, ponavlja sa periodom, koji iznosi najvie bn. Ipak, LKG mogu biti dobar izbor za ono to nam je potrebno. Na primjer, u ugraenom sustavu, koliina raspoloive memorije je esto vrlo ograniena. Slino tome, u okruenju kao to su igrae konzole, uzimanje malog broja bitova visokog reda LK generatora moe biti dovoljno. Bitove nieg reda LK generatora, kad je m potencija broja 2, nikada ne bi trebalo upotrebljavati za bilo koji stupanj sluajnosti. Doista, samo zamjena vrijednosti 2n sa modulom, otkriva da bitovi nieg reda imaju vrlo kratke cikluse. Naposljetku, bilo koji LKG punog ciklusa, kad je m potencija broja 2, generirat e naizmjence neparne i parne rezultate.

10

Usporedba sa ostalim generatorima pseudosluajnih brojeva Ako su potrebni sluajni brojevi vee kvalitete, i dostupno je dovoljno memorije (~2KB), tada Marsenne Twister algoritam prua neizmjerno dui vremenski period (219937-1) i promjenjivu uniformnost. Mersenne Twister algoritam generira visoko kvalitetnija odstupanja nego to to moe gotovo bilo koji drugi LKG. Zanimlji vo je to da algoritam Mersenne Twister koristi LKG za generiranje seed podatka. Linearni registar s povratnim pomakom, takoer generator pseudosluajnih brojeva, moe se implementirati sa gotovo istom koliinom memorije, i generira slijed pseudosluajnih brojeva, iji je sluajnost bolje izraunata (kvalitetnije dobivena), to se tie niza bitova, iako s malo vie raunanja.

11

2.2.1.4 Mersenneov generator

Mersenneov algoritam (orginalni naziv je engl. Mersenne Twister, MT) je generator pseudosluajnih brojeva koji se temelji na matrici linearnog ponavljanja nad konanim binarnim poljem F2. Ovaj je algoritam dobio naziv po injenici da je duljina perioda unutar kojega se generiraju sluajni brojevi jednaka Mersennovom p rostom broju (prost broj oblika 2p-1). Postoji vie verzija algoritma, a razlikuju se po veliini odabranog Mersenneovog broja. Noviji i ee koriten je MT19937 (Mersenne Twister, uz Mersennov broj 219937-1) uz 32-bitnu rije. Postoji varijanta sa 64-bitnom rijei, MT19937-64, koja generira drugaiji niz. Za rije duljine k-bita, algoritam generira brojeve s gotovo uniformnom distribucijom u rasponu [0, 2k -1].

Prednosti i mane Algoritam brzo stvara pseudosluajne brojeve i posebno je izraen s ciljem

ispravljanja nedostataka prijanjih algoritama. Njegove najvanije prednosti su: a) Dugaak period , iznosi ak 219937-1. b) Ima dobru distribuciju, k-distribuiran je na 32-bitnu tonost za svaki 1 K 623. c) Uinkovita upotreba memorije i visoke performanse. Zadovoljava mnoge testove sluajnosti (engl. randomness tests), kao to su Diehard i TestU01 Crush testovi.

Za mnoge primjene, Mersenne Twister je postao prvi izbor za generator pseudosluajnih brojeva, na primjer u MATLAB-u (naredba rand), Gretlu, Pythonu i Rubyu. Algoritam zbog matinog oblika nije pogodan za kriptografiju (za razliku od Blum Blum Shub generatora). Jedan od nedostataka ovog algoritma je injenica da je potrebno puno vremena da prijee iz poetnog stanja u zadovoljavajui sluajni izlaz. Fibonaccijev generator (engl. lagged Fibonacci generator) i linearni kongruentni generator puno bre dobivaju zadovoljavajue poetne vrijednosti i obino se koriste u Mersennovom algoritmu u tu svrhu.
12

R-u, Mapleu,

Pojedini kritiari, posebno George Marsaglia, tvrde da iako je algoritam dobar u generiranju sluajnih brojeva, nije elegantan i pretjerano je kompliciran za provedbu. George Marsaglia je dao nekoliko primjera generatora sluajnih brojeva koji su manje sloeni uz znatno vee periode. Na primjer, multiply-with-carry generator moe imati period 1033000, biti znatno bri i imati jednaku ili bolju distribuciju sluajnih brojeva. Za ve spomenuti problem loe inicijalizacije, Marsaglia je ponudio alternativu u WELL algoritmu ("Well Equidistributed Long-period Linear).

Pseudokod Mersenneovog algoritma:


// Create a length 624 array to store the state of the generator int[0..623] MT int index = 0 // Initialize the generator from a seed function initializeGenerator(int seed) { MT[0] := seed for i from 1 to 623 { // loop over each other element MT[i] := last 32 bits of(1812433253 * (MT[i-1] xor (right shift by 30 bits(MT[i-1]))) + i) // 0x6c078965 } } // Extract a tempered pseudorandom number based on the index-th value, // calling generateNumbers() every 624 numbers function extractNumber() { if index == 0 { generateNumbers() } int y := MT[index] y := y xor (right shift by 11 bits(y)) y := y xor (left shift by 7 bits(y) and (2636928640)) // 0x9d2c5680 y := y xor (left shift by 15 bits(y) and (4022730752)) // 0xefc60000 y := y xor (right shift by 18 bits(y)) index := (index + 1) mod 624 return y }

13

// Generate an array of 624 untempered numbers function generateNumbers() { for i from 0 to 623 { int y := 32nd bit of(MT[i]) + last 31 bits of(MT[(i+1) mod 624]) MT[i] := MT[(i + 397) mod 624] xor (right shift by 1 bit(y)) if (y mod 2) == 1 { // y is odd MT[i] := MT[i] xor (2567483615) // 0x9908b0df } } }

14

2.2.1.5 Lehmerov generator pseudosluajnih brojeva

Lehmerov generator pseudosluajnih brojeva se esto spominje i kao Park-Millerov generator pseudosluajnih brojeva. Lehmerov generator sluajnih brojeva je dobio ime po D.H Lehmeru i posebna je verzija linearnih kongruentnih generatora (engl. linear congruenital generator, LCG ). Opa formula je: Xn+1 = aXn (mod m), gdje je mnoitelj a cijeli broj iz intervala [2, m-1], a m prost broj.

Bitna svojstva algoritma su:

a) Xn 0, odnosno izlaz generatora nikad ne kolapsira u nulu, b) Xn su brojevi iz intervala [1, m-1] ili skalirano [1/m, 1-1/m], c) kvaliteta generatora ovisi o izboru parametara m i a. Dobrim odabirom parametara m i a, niz prvih m-1 brojeva se odabire sluajno, a nakon tog broja niz se ponavlja, te vie nije sluajan nego periodian. Parametri m i a odreuju duljinu niza i cilj je odabrati ih tako da taj niz bude to dulji. Najee koriten odabir parametara je MINSTD (minimal standard). Parametre su odabrali Park i Miller, a = 16807 = 75 i m = 231-1 = 2147483647. Ponekad se Lehmerov generator naziva i Park-Millerov upravo zbog popularnosti takvog odabira parametara. Odabir je prikladan za 32-bitna raunala, no treba paziti na mogunost preljeva koji u najgorem sluaju zahtijeva 46 bitova. Koriste se i drug e verzije algoritma, primjerice Cray superraunalo koristi parametre a = 44485709377909 , te m = 245. Poznat je takoer i RANDU algoritam, razvijen od strane IBM-a. Najvie se koristio 1960-ih godina na mainframe raunalima, ali se pokazao manjkav i zato se mnoga istraivanja iz tog razdoblja smatraju nepouzdanima.

15

Usporedba s LCG-om Kao to je ve spomenuto, Lehmerov algoritam je posebni sluaj LK generatora s parametrom c=0 i prema tome ima odreena ogranienja s obzirom na LKG. Konkretno u Lehmerovom algoritmu poetni lan X0 i modul m moraju biti relativno prosti brojevi, to nije sluaj za LKG openito. Za razliku od LK generatora, najvei period Lehmerovog algoritma je m-1, a uz to postoji uvjet da m mora biti prost broj i a mora biti primitivni korijen modulo m.

Primjer koda Primjer koda u C programskom jeziku za Park-Millerovu verziju algoritma je sljedei:
uint32_t lcg_rand(uint32_t a) { return ((uint64_t)a * 279470273UL) % 4294967291UL; }

Od mogunosti preljeva se osigurava prelaskom sa 32 (uint32_t) na 64 bita (uint64_t).

Primjer koda u MATLAB-u:


a=16807;% a=7^5 m=2147483647; %m=2^31-1 x=zeros(1,100000); x(1)=1; for i=1:100000 z(i+1)=mod((a*z(i)),m); end

16

U navedenom kodu se generira niz od 100.000 lanova na prinicipu Lehmerovog algoritma. Ako je potrebno, mogue je generirati niz na cijelom periodu, m -1. U ovom sluaju to nismo napravili jer bi tada za izvoenje koda bilo potrebno znaajno vie vremena. Za prvi element u nizu smo uzeli broj 1 to zadovoljava uvjet da m i prvi element u nizu moraju biti relativno prosti brojevi.

2.2.1.6 Ostali generatori pseudosluajnih brojeva

Lagged Fibonacci generator Multiply-with-carry Maximal periodic reciprocals Well Equidistributed Long-period Linear Xorshift

Kriptografski algoritmi: ifriranje Kriptografske hash funkcije ISAAC (ifriranje) Linearni registar s povratnim pomakom

17

2.2.2 Hardverski generatori sluajnih brojeva LETech ComScire Protego true-random.com Intel 810/815/840/845G chipsets VIA Padlock engine LavaRnd RBI ID Quantique Westphal Electronic Araneus Alea Entropy Key

18

3. Slot machines
Osnovne vrste automata su mehaniki (engl. reel), virtualni (engl. virtual reel) i video automati (engl. video slot machines). Originalni mehaniki automati su koristili pet, ali su uskoro automati s tri zupanika postali standard. Problem s tri zupanika to daje manji broj moguih kombinacija. Automat s tri zupanika, od kojih svaki ima deset simbola daje samo 103, odnosno tisuu moguih kombinacija. To ograniava broj moguih dobitnih kombinacija, npr. glavni jackpot e se dogoditi jednom u tisuu pokuaja. Maksimalna teoretska isplata, uz pretpostavku stopostotno g povrata bi tisuu puta umnoila ulog, ali to ne bi ostavilo puno prostora za visinu drugih isplata, to bi automat uinilo prerizinim i prilino dosadnim. Iako se broj simbola na kraju poveao na oko 22, doputajui oko 10.000 kombinacija, to jo uvijek ograniava veliinu jackpota kao i broj moguih ishoda. U 1980-ih, meutim, proizvoai automata su poeli ugraivati elektroniku u s voje proizvode, te ih programirati za teinu pojedinih simbola. To su tzv. virtualni automati (engl. virtual reel). Ugradnja elektronike je omoguila da prikaz neuspjelih kombinacija simbola ne odgovara njihovoj stvarnoj frekvenciji na mehanikom zupaniku. To je proizvoaima omoguilo veu kontrolu i manipulaciju nad dobicima. Godine 1984. odobren je patent koji koristi ovu tehnologiju (US Patent 4448419) i na temelju kojeg rade svi automati ove vrste. U njemu stoji: "Vano je da automat prikazuje da su anse za dobitak vee nego to zapravo jesu uz zakonska ogranienja po kojima igre na sreu moraju raditi." Virtualni automat moe imati do 256 moguih zaustavljanja po zupaniku, doputajui 2563 = 16.777.216 moguih kombinacija. To znai da ako proizvoa ponudi milijun dolara za glavni jackpot na oklade od 1 dolara, uvjeren je da e se dogoditi samo svakih 16,7 milijuna ig ara. U modernim automatima se koriste mikroprocesori to omoguuje dodjelu razliitih vjerojatnosti za svaki simbol na svakom zupaniku. Za igraa tada moe izgledati da je pobjedniki simbol tako blizu, a zapravo je vjerojatnost puno manja. U suvremenim automatima, zupanici i poluga se koriste iskljuivo iz povijesnih i zabavnih razloga.

19

Video automati nemaju pokretnih dijelova, umjesto toga koristi se grafiki prikaz simbola na zaslonu. Budui da igra u sutini igra raunalnu igru, proizvoai su u mogunosti ponuditi vie interaktivnih elemenata, kao to su napredne bonus igre i atraktivna video grafika. Budui da nema mehanikih ogranienja za dizajn video automata, veina ih prikazuje pet zupanika, a ne tri. To uvelike proiruje broj mogunosti: stroj moe imati 50 ili vie simbola po zupaniku, to moe dati omjere do 300.000.000 : 1. Video automati obino potiu igraa da igra na vie linija, pa umjesto da prati samo simbole u sredini, linija moe ii okomito od vrha prema dnu, dijagonalno ili putem bilo kojeg drugog obrasca koji odredi proizvoa. Svaki je simbol jednako vjerojatan , pa proizvoa doputa igrau i dobitke po linijama. Dugorono gledajui, dobitak igraa e biti isti bez i sa tom mogunosti. Za igraa je prednost to teoretski vie linija daje vie mogunosti dobitka u pojedinoj igri, ali je zbog toga spreman vie puta se kladiti. Kako bi umanjili osjeaj igraa da gubi, proizvoai obino nude bonus igre. ak ako igra gubi, bonus igre mu omoguuju da povrati svoje gubitke.

20

Kako bismo najbolje opisali kako funkcioniraju slot machines, odnosno kako slot machine koristi vrijednosti izgenerirane generatorom pseudosluajnih brojeva, u nastavku je tablica virtualnog kotaa koji se upotrebljava u samom automatu:

21

3 bar je plave boje, 2 bar je bijele, a 1 bar crvene boje. Vrijednosti u tablici oznaavaju koji e se simbol na zaslonu pojaviti ovisno o broju zaustavljanja kotaa. One mogu biti u rasponu od 0 do 4 bilijuna, no kako su to jako velike vrijednosti, potrebno je te vrijednosti pretvoriti tako da budu unutar upotrebljivog raspona. Raspon koji mi elimo nije broj zaustavljanja kotaa slot machine -a kojeg pokreemo, ve broj zaustavljanja virtualnog kotaa definiranog od strane programera. Oznake u tablici predstavljaju ono to mi vidimo na zaslonu (fiziki). Te su vrijednosti pojavljivanja povezane u sljedeoj tablici sa vrijednostima koje izraunavaju programeri, i koje mi naposljetku zapravo i vidimo:

22

Na tablici moemo primjetiti da e vrijednost bijele sedmice zapravo biti na zaslonu: 6, 1 i 7. Ukupan broj dobitnih kombinacija za tri bijele sedmice je stoga 6*1*7 = 42. Konano moemo izraunati kombinacije dobitka i gubitka na automatu. Sljedea tablica prikazuje dobitnu kombinaciju, broj kombinacija, vjerojatnost dobitka, i doprinos povrata za sve mogue dogaaje:

23

Ono to je nama najzanimljivije je prednost kue. Slot machines funkcioniraju na nain da imaju 3 do 5 bubnjeva koji na temelju hardverskog generatora sluajnih brojeva pokau odreenu kombinaciju simbola. Ako bi igrai igrali npr. 1 kn po igri kroz vrlo dugo razdoblje kao to je 1.000.000 igara, tada bi automat ako radi, u potpunosti sluajno isplatio prosjeno 1.000.000 kn i kockarnica (casino) ne bi imao sigurnu zaradu (dobit). Iz tog razloga se svaki slot machine podesi da donosi odreenu zaradu kockarnici neovisno o tome koliko se dobitaka isplatilo i koliko je novaca u igrama uloeno, to zapravo znai da ne pratimo povijest kombinacija, bilo da su one bile dobitne ili ne.Ta prednost se naziva prednost kue i zarada je kockarnice izraena kao postotak igraevih uloga. Ova prednost koju kockarnica ima nad svakim igraem dolazi od toga to kockarnica ne isplauje dobitak prema stvarnoj vjerojatnosti igre nego prema neto nioj vjerojatnosti. Na sljedeem primjeru prikazali smo na koji nain je prednost kue implementirana:

Dobitne kombinacije Tri globusa Tri bar koda Tri ljive Tri zvona Tri narane Tri trenje Dvije trenje Jedna trenja

Isplata [u kn] za 1kn uloga 500 100 50 20 15 10 5 2

Tablica1. Umanjena isplatna lista U tablici 1. prikazane su vrijednosti dobitaka koje su umanjene za odreeni postotak a u tablici 2. je prikazano koliko ima svakih simbola na pojedinom bubnju.

24

Simbol Trenja Narana Zvono Globus ljiva Limun Bar Ukupno

Bubanj 1 Bubanj 2 Bubanj 3 5 4 3 1 3 3 1 20 2 4 4 1 3 5 1 20 3 4 4 1 1 6 1 20

Tablica2. Broj simbola po bubnjevima Koristei podatke iz ove dvije tablice, izrauna se najprije vjerojatnost svakog dobitka, a zatim i povrat novaca svake dobitne kombinacije:

Vjerojatnost dobitka tri globusa = (1/20)*(1/20)*(1/20) = 1/8000 = 0.000125 Vjerojatnost dobitka tri bar koda = (1/20)*(1/20)*(1/20) = 1/8000 = 0.000125 Vjerojatnost dobitka tri ljive = (3/20)*(3/20)*(1/20) = 9/8000 = 0.001125 Vjerojatnost dobitka tri zvona = (3/20)*(4/20)*(4/20) = 48/8000 = 0.006000 Vjerojatnost dobitka tri narane = (4/20)*(4/20)*(4/20) = 64/8000 = 0.008000 Vjerojatnost dobitka tri trenje = (5/20)*(2/20)*(3/20) = 30/8000 = 0.003750 Vjerojatnost dobitka dvije trenje = (5/20)*(2/20)*(17/20) = 170/8000 = 0.021250 Vjerojatnost dobitka trenje = (5/20)*(18/20)*(20/20) = 1800/8000 = 0.225000

25

Umnoak vjerojatnosti dobitka svake kombinacije i njene isplatne vrijednosi daje nam povrat automata:

Povrat tri globusa = (1/8000)*500 = 0.062500 Povrat tri bar koda = (1/8000)*100 = 0.012500 Povrat tri ljive = (9/8000)*50 = 0.056250 Povrat tri zvona = (48/8000)*20 = 0.120000 Povrat tri narane= = (64/8000)*15 = 0.120000 Povrat tri trenje = (30/8000)*10 = 0.037500 Povrat dvije trenje = (170/8000)*5 = 0.106250 Povrat trenje = (1800/8000)*2 = 0.450000 Ukupan zbroj svih povrata jednak je 0.965000, to znai da e kroz vrlo dugo razdoblje igranja automat na kraju isplatiti maksimalno 96,5% svih uloga koji su uplaeni, odnosno kockarnica ima sigurnu zaradu.

26

4. Zakljuak
Bez obzira na vrlo lijep postotak povrata uloenih sredstava od oko 95%, ljudi zaboravljaju da to vrijedi samo dugorono, i da e kako bi doli do takve isplate, trebati jako puno novaca uloiti, odnosno potroiti, a na kraju moda ni nee uspjeti ostvariti zavidan uspjeh. Osim ako zaista nemaju sree. Koliko god da igre na sreu djelovale sluajno, jer radi se o velikim vjerojatnostima dobitka i jo veem broju kombinacija, pa se sve ini vrlo sluajno, sada znamo da one sadre mnoge elemente namjetanja. Iako je to najvie radi toga da bi ljudi zaradili, a ne da bi gubili, kockarnice su svejedno ovdje kako bi na nama zaradile. Stanovnici urbanih naselja (53%) su ee igrai nego oni koji ive na selima (49%), i to se dogaa upravo zbog toga to su im razliite vrste igara mnogo dostupnije. Svoju sreu na ovaj nain trae ee mukarci (58%) nego ene (44%). Bez obzira na pomisao da ljudi to su stariji postaju svjesniji da se na ovaj nain nee obogatiti, najvie je upravo onih u dobi od 45 do 54 godina, tonije njih 59%. Povezanost dobi i sklonosti igrama na sreu nam otkriva jednu nimalo pozitivnu injenicu, a to je da najmlai igrai, to u ovom sluaju znai osobe u dobi od 15 do 25 godina, najvie od svih preferiraju sportske kladionice. ak 29% njih, dakle gotovo svaki trei ulae novac na klaenja u kladionicama, to je podatak koji zasluuje osobitu pozornost, jer nam govori poneto o svjetonazoru nadolazeih generacija. Inae, interes za kladionicama gotovo pravilno opada s dobi, tako da u njih odlazi iznimno malo osoba u dobi iznad 65 godina, tek 1%. Iako postoje mnogi bolji algoritmi i bolji naini za dobivanje sluajnih brojeva koji su sluajni u pravom smislu, ipak je najbolje uzimati vremenski seed, te hardversko generiranje sluajnih brojeva zbog lakeg namjetanja i lakeg odravanja automata, te naposljetku - zadovoljnijih korisnika koji posjeuju automat klubove i kockarnice.

27

5. Literatura
[1] https://www.lutrija.hr/, studeni 2010.

[2]

http://www.mka.hr/drustvo/kockanje-i-igre-na-srecu/, studeni 2010.

[3]

http://en.wikipedia.org/wiki/List_of_pseudorandom_number_generators, prosinac 2010.

[4]

http://en.wikipedia.org/wiki/Slot_machine, prosinac 2010.

[5]

http://robison.casinocitytimes.com/article/how-does-a-slot-machine-use-thenumbers-from-the-rng?-43118, sijeanj 2011. http://wizardofodds.com/slots, sijeanj 2011. http://www.top-lista.com/zaradaiigrenasrecu.php, sijeanj 2011. http://casinoigre.com/casino-igre/slot-automat-igre/, sijeanj 2011.

[6]

[7]

[8]

28

6. Prilog (programski kod u Matlabu)


Algoritmi koje koristimo za implementaciju naeg slot machine su generatori pseudosluajnih brojeva:R8_UNI, R8_UNIFORM_01 i RANDLC. Sva tri algoritma se vrte u realnom vremenu

GLAVNI.m
DIM = input ('Upisite koliko slucajnih brojeva zelite generirati: '); slike; slucajnibrojevi; dobitci1; dobitci2; dobitci3;

slike.m
bar1 = 101; bar2 = 102; bar3 = 103; red7 = 111; while7 = 112; blue7 = 113; blank = 000; stupci = [102 102 102; 102 102 102; 102 000 102; 000 000 000; 000 103 000; 103 103 103; 103 000 000; 000 000 000; 000 000 000; 000 112 112; 112 000 112; 112 000 112; 112 000 112; 112 101 112; 112 101 112; 112 101 112; 000 101 000; 000 000 000; 000 000 000; 101 000 101; 101 113 101; 101 113 101; 000 113 101; 000 113 101; 000 113 000; 113 113 000; 113 113 000; 113 000 113; 113 000 000; 113 000 000; 113 102 000; 000 102 102; 000 000 102; 000 000 102; 102 103 000; 102 103 000; 000 000 103; 000 000 000; 103 000 000; 000 000 000; 000 000 000; 000 111 000; 000 111 111; 000 111 000; 111 000 000; 000 000 000; 000 000 000; 000 000 000; 000 000 103; 000 103 103; 103 103 103; 103 103 000; 103 000 000; 000 000 102; 000 102 102; 102 102 102; 102 000 000; 000 000 000; 000 101 101; 101 101 101; 101 101 101; 101 101 101; 000 000 000; 000 000 000];

29

slucajnibrojevi.m
DIM; brojevi1 = zeros(DIM,3); brojevi2 = zeros(DIM,3); brojevi3 = zeros(DIM,3); brojevi4 = zeros(DIM,3); brojevi1_64 = zeros(DIM,3); brojevi11_64 = zeros(DIM,3); brojevi2_64 = zeros(DIM,3); brojevi3_64 = zeros(DIM,3); %%prbrojevi = zeros (1,DIM); %%s1 = 1+(2147483562-1)*rand; %%spocetni = (1+(2147483562-1)*rand); for j = 1:3 spocetni = 1+(20000000-1)*rand; %%generira se inicijalni SEED s1 = spocetni; s2 = spocetni; s3 = spocetni; s11 = spocetni; for i = 1:length(brojevi1) [brojevi1(i,j),s1,s11] = r8_uni(s1,s11); %% vraa brojeve izmeu 0i1 brojevi1_64(i,j) = round((brojevi1(i,j)*63))+1; %%brojevi izmeu 0 i 1 se pretvaraju u brojeve (0-63)+1 i 1 brojevi2_64(i,j) = round((brojevi2(i,j)*63))+1; [brojevi3(i,j),s3] = randlc(s3); i 1 brojevi3_64(i,j) = round((brojevi3(i,j)*63))+1; %% brojevi4(i,j)=rand; end end figure; hist(brojevi1_64(:,1),64), title('r8 uni algoritam'); figure; hist(brojevi2_64(:,1),64), title('r8 uniform algoritam'); %% vraa brojeve izmeu 0 (1-64) %% vraa brojeve izmeu 0 [brojevi2(i,j),s2] = r8_uniform(s2);

30

figure; hist(brojevi3_64,64), title('randlc algoritam');

r8_uni.m
function [ r, s1, s2 ] = r8_uni ( s1, s2 ) %************************************************************************** ***80 % %% R8_UNI returns a pseudorandom number between 0 and 1. % % % % % % % % % % % % % % % % % % % % % % % % % % % % % Pierre LEcuyer, Efficient and Portable Combined Random Number Generators, Communications of the ACM, Volume 31, Number 6, June 1988, pages 742-751. Reference: Original PASCAL version by Pierre L'Ecuyer. Modifications by John Burkardt. Author: 08 July 2008 Modified: This code is distributed under the GNU LGPL license. Licensing: The cycle length is claimed to be 2.30584E+18. This function generates uniformly distributed pseudorandom numbers between 0 and 1, using the 32-bit generator from figure 3 of the article by L'Ecuyer. Discussion:

31

% % % % % % % % % % %

Parameters: Input, integer S1, S2, two values used as the seed for the sequence. On first call, the user should initialize S2 should be initialized S1 to a value between 1 and 2147483562; to a value between 1 and 2147483398. Output, real R, the next value in the sequence. Output, integer S1, S2, updated seed values. k = floor ( s1 / 53668 ); s1 = 40014 * ( s1 - k * 53668 ) - k * 12211; if ( s1 < 0 ) s1 = s1 + 2147483563; end k = floor ( s2 / 52774 ); s2 = 40692 * ( s2 - k * 52774 ) - k * 3791; if ( s2 < 0 ) s2 = s2 + 2147483399; end z = s1 - s2; if ( z < 1 ) z = z + 2147483562; end r = z / 2147483563.0;

return end

32

r8_uniform.m
function [ r, seed ] = r8_uniform( seed ) %************************************************************************** ***80 % %% R8_UNIFORM_01 returns a unit pseudorandom R8. % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % Reference: John Burkardt Author: 21 September 2006 Modified: This code is distributed under the GNU LGPL license. Licensing: 12345 207482415 1790989824 207482415 1790989824 2035175616 0.096616 0.833995 0.947702 Input SEED Output SEED R8_UNIFORM_01 If the initial seed is 12345, then the first three computations are The integer arithmetic never requires more than 32 bits, including a sign bit. seed = 16807 * seed mod ( 2**31 - 1 ) r8_uniform_01 = seed / ( 2**31 - 1 ) This routine implements the recursion Discussion:

33

% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % i4_huge = 2147483647; if ( seed == 0 ) Output, integer SEED, the updated seed. This would normally be used as the input seed on the next call. Output, real R, a random value between 0 and 1. Input, integer SEED, the integer "seed" used to generate the output random number. SEED should not be 0. Parameters: Peter Lewis, Allen Goodman, James Miller, A Pseudo-Random Number Generator for the System/360, IBM Systems Journal, Volume 8, Number 2, 1969, pages 136-143. Pierre L'Ecuyer, Random Number Generation, in Handbook of Simulation, edited by Jerry Banks, Wiley, 1998, ISBN: 0471134031, LC: T57.62.H37. Bennett Fox, Algorithm 647: Implementation and Relative Efficiency of Quasirandom Sequence Generators, ACM Transactions on Mathematical Software, Volume 12, Number 4, December 1986, pages 362-376. Paul Bratley, Bennett Fox, Linus Schrage, A Guide to Simulation, Second Edition, Springer, 1987, ISBN: 0387964673, LC: QA76.9.C65.B73.

34

fprintf ( 1, '\n' ); fprintf ( 1, 'R8_UNIFORM_01 - Fatal error!\n' ); fprintf ( 1, ' end seed = floor ( seed ); seed = mod ( seed, i4_huge ); if ( seed < 0 ) seed = seed + i4_huge; end k = floor ( seed / 127773 ); seed = 16807 * ( seed - k * 127773 ) - k * 2836; if ( seed < 0 ) seed = seed + i4_huge; end r = seed * 4.656612875E-10; return end Input SEED = 0!\n' ); error ( 'R8_UNIFORM_01 - Fatal error!' );

35

randlc.m
function [ value, x ] = randlc ( x ) %************************************************************************** ***80 % %% RANDLC returns a uniform pseudorandom value. % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % David Bailey, Eric Barszcz, John Barton, D Browning, Robert Carter, Leonardo Dagum, Rod Fatoohi, Samuel Fineberg, Paul Frederickson, Thomas Lasinski, Robert Schreiber, Horst Simon, V Venkatakrishnan, Sisira Weeratunga, The NAS Parallel Benchmarks, RNR Technical Report RNR-94-007, Reference: John Burkardt Author: 08 March 2010 Modified: This code is distributed under the GNU LGPL license. Licensing: A suggested value for A is 5^13 = 1220703125. This scheme generates 2^44 numbers before repeating. X(K+1) = A * X(K) mod 2^46 The algorithm uses the linear congruential generator: The number returned is in the range (0, 1). Discussion:

36

% % % % % % % % % % % % % that % % % % % %

March 1994. Donald Knuth, The Art of Computer Programming, Volume 2, Seminumerical Algorithms, Third Edition, Addison Wesley, 1997, ISBN: 0201896842, LC: QA76.6.K64. Parameters: Input, integer X, the current seed. 1 <= A <= 2^46. Output, real VALUE, the next pseudorandom value. Output, integer X, the updated seed. persistent a1; persistent a2; persistent ks; persistent r23; persistent r46; persistent t23; persistent t46; X should be an odd integer such

% % % % % % % % % % % a = 1220703125.0; These are computed in loops, rather than by merely using the power in order to insure that the results are exact on all systems. operator, R23 = 2 ^ -23, R46 = 2 ^ -46, T23 = 2 ^ 23, T46 = 2 ^ 46. If this is the first call, compute

37

if ( isempty ( ks ) ) r23 = 1.0; r46 = 1.0; t23 = 1.0; t46 = 1.0; for i = 1 : 23 r23 = 0.5 * r23; t23 = 2.0 * t23; end for i = 1 : 46 r46 = 0.5 * r46; t46 = 2.0 * t46; end % % % t1 = r23 * a; a1 = floor ( t1 ); a2 = a - t23 * a1; ks = 1; end % % % if ( x == 0.0 ) x = 314159265.0; end % % % if ( x < 0.0 ) x = - x; end % % % Break X into two parts X1 and X2 such that: Deal somewhat arbitrarily with negative input X. Deal with a 0 input value of X. Break A into two parts such that A = 2^23 * A1 + A2.

38

% % % % % % %

X = 2^23 * X1 + X2, then compute Z = A1 * X2 + A2 * X1 X = 2^23 * Z + A2 * X2 t1 = r23 * x; x1 = floor ( t1 ); x2 = x - t23 * x1; t1 = a1 * x2 + a2 * x1; t2 = floor ( r23 * t1 ); z = t1 - t23 * t2; t3 = t23 * z + a2 * x2; t4 = floor ( r46 * t3 ); x = t3 - t46 * t4; value = r46 * x; return (mod 2^23) (mod 2^46).

end

39

rng.m
function [random]=rng(z0) persistent z; if nargin > 0 z=z0; random=z; return; end if isempty(z) z=1; random=z; return; end a=16807; m=2^31-1; z=mod(a*z,m); %%z64=mod(z,65); random=z; end %%brojevi od 1 do 2^31-1

40

dobitci1.m (ekvivalentno m skriptama dobitci2.m i dobitci3.m)


%%slike; pojedinim krugovima %%slucajnibrojevi; %%m skripta koja generira 30.000 slucajnih brojeva pomocu razlicitih algoritama dobitak1 = 0; odigrano = zeros(DIM,1); 'slucajnibrojevi' kombinacije1 = zeros(DIM,3); komb = zeros(1,15); komb1 = 0; komb2 = 0; komb3 = 0; komb4 = 0; komb5 = 0; komb6 = 0; komb7 = 0; komb8 = 0; komb9 = 0; komb10 = 0; komb11 = 0; komb12 = 0; komb13 = 0; komb14 = 0; komb15 = 0; for a = 1:DIM odigrano(a) = a; for i = 1:3 slbr(i) = brojevi1_64(a,i); id7(i) = round(stupci(slbr(i),i)/10); idbar(i) = round(stupci(slbr(i),i)/10); idboja(i) = mod(stupci(slbr(i),i),10); kombinacije1(a,i) = stupci(slbr(i),i); end if (id7(1) == 11 && id7(2) == 11 && id7(3) == 11) %%bilo koje tri sedmice (peta kombinacija) if (idboja(1) == 1) if (idboja(2) == 2 && idboja(3) == 3) %%prva kombinacija dobitak1 = dobitak1+2400; komb1 = komb1+1; end if (idboja(2) == 1 && idboja(3) == 1) %%druga kombinacija dobitak1 = dobitak1+1199; komb2 = komb2+1; end end if (idboja(1) == 2 && idboja(2) == 2 && idboja(3) == 2) %%trea kombinacija dobitak1 = dobitak1+200; komb3 = komb3+1; %% varijeblu DIM vue iz m skripte %%m skripta u kojoj se nalaze kombinacije po

41

end if (idboja(1) == 3 && idboja(2) == 3 && idboja(3) == 3) %%etvrta kombinacija dobitak1 = dobitak1+150; komb4 = komb4+1; end dobitak1 = dobitak1+80; komb5 = komb5+1; end if (idbar(1) == 10 && idbar(2) == 10 && idbar(3) == 10) kombinacija bilo koji BAR if (idboja(1) == 1 && idboja(2) == 2 && idboja(3) == 3) %% 6 kombinacija (1,2,3 bar) dobitak1 = dobitak1+50; komb6 = komb6+1; elseif (idboja(1) == 3 && idboja(2) == 3 && idboja(3) == 3) %% 7 kombinacija (3,3,3 bar) dobitak1 = dobitak1+40; komb7 = komb7+1; elseif (idboja(1) == 2 && idboja(2) == 2 && idboja(3) == 2) %% 8 kombinacija (2,2,2 bar) dobitak1 = dobitak1+25; komb8 = komb8+1; elseif (idboja(1) == 1 && idboja(2) == 1 && idboja(3) == 1) %% 10 kombinacija (1,1,1 bar) dobitak1 = dobitak1+10; komb10 = komb10+1; else dobitak1 = dobitak1+5; komb11 = komb11+1; end end if (idboja(1) == 1 && idboja(2) == 2 && idboja(3) == 3) kombinacija (crvena, bijela, plava) if (id7(1) ~= 11 || id7(2) ~= 11 || id7(3) ~= 11) iskljuci 1 kombinacija if (idbar(1)~=10 || idbar(2)~=10 || idbar(3)~=10) 6 kombinaciju dobitak1 = dobitak1+20; %% iskljuci %% %%9 %% 11

42

komb9 = komb9+1; end end end if (idboja(1) == 1 && idboja(2) == 1 && idboja(3) == 1) kombinacija (bilo koje tri crvene) if (id7(1) ~= 11 || id7(2) ~= 11 || id7(3) ~= 11) iskljuci 2 kombinacija if (idbar(1) ~= 10 || idbar(2) ~= 10 || idbar(3) ~= 10) iskljuci 10 kombinaciju dobitak1 = dobitak1+2; komb12 = komb12+1; end end end if (idboja(1) == 2 && idboja(2) == 2 && idboja(3) == 2) kombinacija (bilo koje tri bjele) if (id7(1) ~= 11 || id7(2) ~= 11 || id7(3) ~= 11) iskljuci 3 kombinacija if (idbar(1) ~= 10 || idbar(2) ~= 10 || idbar(3) ~= 10) iskljuci 8 kombinaciju dobitak1 = dobitak1+2; komb13 = komb13+1; end end end if (idboja(1) == 3 && idboja(2) == 3 && idboja(3) == 3) kombinacija (bilo koje tri crvene) if (id7(1) ~= 11 || id7(2) ~= 11 || id7(3) ~= 11) iskljuci 4 kombinacija if (idbar(1) ~= 10 || idbar(2) ~= 10 || idbar(3) ~= 10) iskljuci 7 kombinaciju dobitak1 = dobitak1+2; komb14 = komb14+1; end end end %% %% %% 14 %% %% %% 13 %% %% %% 12

43

if (id7(1) == 0 && id7(2) == 0 && id7(3) == 0) %% 15 kombinacija (sva tri prazno) dobitak1 = dobitak1+1; komb15 = komb15+1; end end

44

You might also like