WOO logo

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