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";
}