Kolmen kortin pokerin analyysi
Tässä on videolla luotu koodi.
#sisältää#sisältää #sisältää #sisältää #sisältää #sisältää käyttäen nimiavaruuden standardia; rakennekortti { int r; kokonaisluku s; }; void set_array(void); int pistemäärä(int p1, int p2, int p3); void jakaja(int p1, int p2, int p3, int psc, int tapahtuma_taulukko[]); int pisteet_taulukko[22100]; korttipakka[52]; tyhjä pää() { kokonaisluku i, p1, p2, p3, sc, kissa, pairplus_array[6], tapahtuma-array[4], kokonaisbonus[6]; int ante_bonus_maksa[] = { 0,0,0,1,4,5 }; __int64 tapahtumataulukko[6]; string käden_nimi[] = { "Kolme yksittäistä","Pari","Värisuora","Suora","Kolmoset samaa","Värisuora" }; string event_name[] = { "Pelaaja voittaa", "Jakaja ei täytä vaatimuksia", "Tasapeli", "Jakaja voittaa", "Pelaaja luovuttaa" }; kokonaislukuindeksi = 0; kaksinkertainen ev = 0; for (i = 0; i < 6; i++) { kokonaisbonus[i] = 0; pairplus_array[i] = 0; tapahtumataulukko[i] = 0; } for (i = 0; i < 51; i++) { pakka[i].r = (kokonaisluku)(i / 4); pakka[i].s = i % 4; } set_array(); for (p1 = 0; p1 <= 49; p1++) { kun (p2 = p1 + 1; p2 <= 50; p2++) { for (p3 = p2 + 1; p3 <= 51; p3++) { sc = pisteet_taulukko[indeksi]; kissa = (kokonaisluku)sc / 2197; pairplus_array[kissa]++; jakaja(p1, p2, p3, sc, tapahtumataulukko); ev = (2.0 * (double)tapahtumataulukko[0] + (double)tapahtumataulukko[1] - 2.0 * (double)tapahtumataulukko[3]) / 18424.0; ev += ante_bonus_maksa[kissa]; jos (ev < -1) // taita { tapahtumataulukko[4] += 18424; } muu { for (i = 0; i <= 3; i++) tapahtumataulukko[i] += tapahtumataulukko[i]; tot_ante_bonus[kissa]++; } indeksi++; } } } printf("Pairplus-analyysi\n"); for (i = 0; i < 6; i++) printf("%s\t%i\n", käden_nimi[i].c_str(), pairplus_array[i]); printf("\nEnnakkoanalyysi\n"); for (i = 0; i <=4; i++) printf("%s\t%I64i\t%f\n", tapahtuman_nimi[i].c_str(), tapahtuman_kokonaisuuksien_array[i],(double)tapahtuman_kokonaisuuksien_array[i]/22100.0/18424.0); double pelin_arvo = (2.0 * (double)tapahtumakokonaistaulukko[0] + (double)tapahtumakokonaistaulukko[1] - 2.0 * (double)tapahtumakokonaistaulukko[3] - (double)tapahtumakokonaistaulukko[4]) / 22100.0 / 18424.0; printf("Pelin odotusarvo ilman Ante Bonusta=\t%f\n",game_ev ); for (i = 0; i <= 5; i++) game_ev += ante_bonus_pay[i] * tot_ante_bonus[i] / 22100.0; printf("Pelin odotusarvo Ante Bonuksella=\t%f\n", game_ev); } void jakaja(int p1, int p2, int p3, int psc, int event_array[]) { kokonaisluku d1, d2, d3, i, dsc; kokonaislukuindeksi = 0; for (i = 0; i <= 3; i++) tapahtumataulukko[i] = 0; for (d1 = 0; d1 <= 49; d1++) { for (d2 = d1 + 1; d2 <= 50; d2++) { kohteelle (d3 = d2 + 1; d3 <= 51; d3++) { if ((d1 != p1) && (d1 != p2) && (d1 != p3) && (d2 != p1) && (d2 != p2) && (d2 != p3) && (d3 != p1) && (d3 != p2) && (d3) != p3) ! { dsc = pisteet_taulukko[indeksi]; jos (dsc < 1703) // jälleenmyyjä ei täytä vaatimuksia tapahtumataulukko[1]++; muuten jos (psc>dsc) tapahtumataulukko[0]++; muuten jos (psc < dsc) tapahtumataulukko[3]++; muu tapahtumataulukko[2]++; } indeksi++; } } } } void set_array(void) { kokonaisluku p1, p2, p3, sc; kokonaislukuindeksi = 0; for (p1 = 0; p1 <= 49; p1++) { kun (p2 = p1 + 1; p2 <= 50; p2++) { for (p3 = p2 + 1; p3 <= 51; p3++) { sc = pisteet(p1, p2, p3); pisteet_taulukko[indeksi] = sc; indeksi++; } } } } int-pisteet(int p1, int p2, int p3) { int huuhtelu, suora; korttikäsi[3]; kasi[0].r = (int)(p1 / 4); kasi[1].r = (int)(p2 / 4); kasi[2].r = (int)(p3 / 4); kasi[0].s = p1 % 4; kasi[1].s = p2 % 4; kasi[2].s = p3 % 4; jos ((käsi[0].s == käsi[1].s) && (käsi[1].s == käsi[2].s)) väri = 169 * käsi[2].r + 13 * käsi[1].r + käsi[0].r; muu huuhtelu = 0; jos ((käsi[2].r - käsi[1].r == 1) && (käsi[1].r - käsi[0].r == 1)) suora = käsi[2].r; muuten jos ((käsi[2].r == 12) && (käsi[1].r == 1) && (käsi[0].r == 0)) suora = 1; muu suora = 0; jos ((suora > 0) && (värisuora > 0)) paluu 2197 * 5 + suora; muuten jos (käsi[2].r == käsi[0].r) return 2197 * 4 + käsi[0].r; muuten jos (suora > 0) paluu 2197 * 3 + suora; muuten jos (flush > 0) return 2197 * 2 + väri; muuten jos (käsi[2].r == käsi[1].r) return 2197 + 13 * kasi[1].r + kasi[0].r; muuten jos (käsi[0].r == käsi[1].r) return 2197 + 13 * kasi[1].r + kasi[2].r; muu return 169 * kasi[2].r + 13 * kasi[1].r + kasi[0].r; }