Tällä sivulla
Peruutusvedonlyöntijärjestelmän analysaattorin lähdekoodi
Johdanto
Seuraava ohjelma on kirjoitettu C++:lla. Se on melko yksinkertainen, ja kuka tahansa, jolla on vähänkin kokemusta C++:sta, ymmärtää varmasti, miten se toimii. Pahoittelen dokumentaation puutetta, mutta logiikkaa seuraamalla ei pitäisi olla vaikea nähdä, mistä on kyse.
// // peruutusjärjestelmän analysaattori // 19.10.1998 // #sisältää <iostream.h> #include <stdlib.h> #sisällytä <merkkijono.h> #sisältää <math.h>:n #include <aika.h> #include <stdio.h> void tenbet(); kokonaisluku pää() { char ch; tehdä { tenbet(); cerr << "Pelataanko uudelleen? "; sin >> ch; } while ((ketju == 'y') || (ketju == 'Y')); palauta 0; } tyhjä tenbet() { int maxloss, num, bet[1000], lpt, rpt, i, j, curbet, pankki, tulos[2], randwin, g; pitkä totbet, pyöräytykset; cerr << "Anna maksimihäviö "; cin >> maxloss; cerr << "Anna kokeiden lukumäärä "; cin >> num; cerr << "Ruletti(1) vai craps(2)? "; cin >> g; tulos[0] = 0; tulos[1] = 0; yhteispanos = 0; pyörähdykset = 0; jos (g == 1) { randwin = 32767 * 18/38; } muu { randwin = 32767 * 244 / 495; } for (i = 1; i <= luku; i++) { pankki = 0; lpt = 1; rpt = 10; for (j = 1; j <= 10; j++) { veto[j] = 1; } tehdä { jos (rpt == lpt) { reunakivi = veto[rpt]; } muu { reunakivetys = veto[lpt] + veto[rpt]; } while ((maksimitappio+pankki < curbet)&&(maksimitappio+pankki > 0)) { pyöräyttää++; jos (maksimihäviö + pankki >= veto[lpt]) { totbet += veto[lpt]; jos (rand() <= randwin) { pankki += veto[lpt]; lpt++; } muu { pankki -= veto[lpt]; veto[lpt] *= 2; } } muu { totbet += (maksimihäviö + pankki); jos (rand() <= randwin) { veto[lpt] -= (maksimihäviö + pankki); pankki += (maksimitappio + pankki); } muu { pankki -= (maksimitappio + pankki); } } jos (rpt == lpt) { reunakivi = veto[rpt]; } muu { reunakivetys = veto[lpt] + veto[rpt]; } } jos (maksimitappio + pankki > 0) { totbet+=reunaveto; pyöräyttää++; jos (rand() <= randwin) { lpt++; rpt--; pankki += reunakivi; } muu { rpt++; veto[rpt] = reunus; pankki -= reunakivi; } } } while ((lpt <= rpt) && (maksimihäviö + pankki > 0)); jos (maksimitappio + pankki == 0) { tulos[1]++; } muu { tulos[0]++; } jos (i % 100000 == 0) { cerr << i << "\n"; } } cerr << "Maksimihäviö: " << maxloss << "\n"; cerr << "Häviön todennäköisyys: " << (float)(tulos[1])/(float)(num) << "\n"; cerr << "Keskimääräinen pyörähdysten määrä: " << (float)(pyörähdykset)/(float)(num) << "\n"; cerr << "Keskimääräinen panos: " << (float)(totbet)/(float)(num)<<"\n"; cerr << "Voitot: " << tulos[0]<<"\nHäviöt: "<< tulos[1]<<"\n"; cerr << "Kokonaispanos: " << totbet<<"\n"; cerr << "Kokonaisvoitto/tappio: " << (tulos[0]*10)-(tulos[1]*maksimitappio) << "\n"; cerr << "Yhteensä pyöräytyksiä: " << pyöräytyksiä << "\n"; cerr << "Nettotappio: " << (float)((tulos[0]*10)-(tulos[1]*maksitappio))/(float)totbet << "\n"; }