تحليل لعبة البوكر بثلاث بطاقات
هذا هو الكود الذي تم إنشاؤه في الفيديو.
#يشمل#يشمل #يشمل #يشمل #يشمل ح>#يشمل استخدام مساحة الاسم std؛ بطاقة هيكلية { int r؛ int s; }; مجموعة void_array(void); int النتيجة(int p1، int p2، int p3)؛ void dealer(int p1, int p2, int p3, int psc, int event_array[]); int score_array[22100]; مجموعة البطاقات[52]؛ void main() { int i، p1، p2، p3، sc، cat، pairplus_array[6]، event_array[4]، tot_ante_bonus[6]؛ int ante_bonus_pay[] = { 0,0,0,1,4,5 }; __int64 tot_event_array[6]; سلسلة hand_name[] = { "ثلاثة مفردة","زوج","متساو","مستقيم","ثلاثة من نفس النوع","متساو" }; سلسلة event_name[] = { "فوز اللاعب","الموزع غير مؤهل","تعادل","فوز الموزع","انسحاب اللاعب" }; مؤشر int = 0؛ ضعف القيمة = 0؛ لـ (i = 0؛ i < 6؛ i++) { إجمالي المكافأة السابقة[i] = 0؛ زوج زائد_مصفوفة[i] = 0؛ tot_event_array[i] = 0؛ } لـ (i = 0؛ i < 51؛ i++) { مجموعة الأوراق[i].r = (int)(i / 4)؛ deck[i].s = i % 4؛ } مجموعة_المصفوفة(); لـ (p1 = 0؛ p1 <= 49؛ p1++) { لـ (p2 = p1 + 1؛ p2 <= 50؛ p2++) { لـ (p3 = p2 + 1؛ p3 <= 51؛ p3++) { sc = score_array[الفهرس]؛ القط = (int)sc / 2197؛ زوج زائد_مصفوفة[قط]++؛ التاجر(p1، p2، p3، sc، مجموعة الأحداث)؛ ev = (2.0 * (مزدوج)event_array[0] + (مزدوج)event_array[1] - 2.0 * (مزدوج)event_array[3]) / 18424.0؛ ev += ante_bonus_pay[cat]; إذا (ev < -1) // طي { tot_event_array[4] += 18424؛ } آخر { لـ (i = 0؛ i <= 3؛ i++) tot_event_array[i] += event_array[i]; tot_ante_bonus[cat]++; } الفهرس++؛ } } } printf("تحليل الزوج زائد\n"); لـ (i = 0؛ i < 6؛ i++) printf("%s\t%i\n", اسم اليد[i].c_str(), pairplus_array[i]); printf("\nتحليل مسبق\n"); لـ (i = 0؛ i <= 4؛ i++) printf("%s\t%I64i\t%f\n", event_name[i].c_str(), tot_event_array[i],(double)tot_event_array[i]/22100.0/18424.0); لعبة مزدوجة_ev = (2.0 * (مزدوج)tot_event_array[0] + (مزدوج)tot_event_array[1] - 2.0 * (مزدوج)tot_event_array[3] - (مزدوج)tot_event_array[4]) / 22100.0 / 18424.0؛ printf("قيمة اللعبة المتوقعة بدون مكافأة الرهان المسبق =\t%f\n",game_ev); لـ (i = 0؛ i <= 5؛ i++) game_ev += ante_bonus_pay[i] * tot_ante_bonus[i] / 22100.0; printf("قيمة اللعبة المتوقعة مع مكافأة الرهان المسبق =\t%f\n", game_ev); } void dealer(int p1, int p2, int p3, int psc, int event_array[]) { int d1، d2، d3، i،dsc؛ مؤشر int = 0؛ لـ (i = 0؛ i <= 3؛ i++) event_array[i] = 0؛ لـ (d1 = 0؛ d1 <= 49؛ d1++) { لـ (d2 = d1 + 1؛ d2 <= 50؛ d2++) { لـ (d3 = d2 + 1؛ d3 <= 51؛ d3++) { إذا ((d1 != p1) && (d1 != p2) && (d1 != p3) && (d2 != p1) && (d2 != p2) && (d2 != p3) && (d3 != p1) && (d3 != p2) && (d3 != p3)) { dsc = score_array[الفهرس]؛ إذا (dsc < 1703) // التاجر غير مؤهل مصفوفة الأحداث[1]++; وإلا إذا (psc>dsc) مصفوفة الأحداث[0]++; وإلا إذا (psc < dsc) مصفوفة الأحداث[3]++; آخر مصفوفة الأحداث[2]++; } الفهرس++؛ } } } } مجموعة void_array(void) { int p1، p2، p3،sc؛ مؤشر int = 0؛ لـ (p1 = 0؛ p1 <= 49؛ p1++) { لـ (p2 = p1 + 1؛ p2 <= 50؛ p2++) { لـ (p3 = p2 + 1؛ p3 <= 51؛ p3++) { sc = النتيجة (ص1، ص2، ص3)؛ النتيجة_المصفوفة[الفهرس] = sc؛ الفهرس++؛ } } } } int score(int p1, int p2, int p3) { int flush, straight; يد البطاقة[3]؛ اليد[0].r = (int)(p1 / 4)؛ اليد[1].r = (int)(p2 / 4)؛ اليد[2].r = (int)(p3 / 4)؛ اليد[0].s = p1 % 4؛ اليد[1].s = p2 % 4؛ اليد[2].s = p3 % 4؛ إذا ((hand[0].s == hand[1].s) && (hand[1].s == hand[2].s)) التدفق = 169 * اليد [2].r + 13 * اليد [1].r + اليد [0].r؛ آخر تدفق = 0؛ إذا ((hand[2].r - hand[1].r == 1) && (hand[1].r - hand[0].r == 1)) مستقيم = اليد[2].r؛ وإلا إذا ((hand[2].r == 12) && (hand[1].r == 1) && (hand[0].r == 0)) مستقيم = 1؛ آخر مستقيم = 0؛ إذا ((مستقيم > 0) و(مسح > 0)) العودة 2197 * 5 + مستقيم؛ وإلا إذا (hand[2].r == hand[0].r) العودة 2197 * 4 + hand[0].r؛ وإلا إذا (مستقيم > 0) العودة 2197 * 3 + مستقيم؛ وإلا إذا (المسح > 0) العودة 2197 * 2 + التنظيف؛ وإلا إذا (hand[2].r == hand[1].r) العودة 2197 + 13 * hand[1].r + hand[0].r؛ وإلا إذا (hand[0].r == hand[1].r) العودة 2197 + 13 * hand[1].r + hand[2].r؛ آخر العودة 169 * hand[2].r + 13 * hand[1].r + hand[0].r؛ }