这篇我们主要讲讲概率啊,期望啊,EV 啊什么的。
概率相信大家都懂,九年级数学课本第 25 章。
期望就是数学期望,自己百度,扫一眼就行了。
这篇文章的重头戏是 EV。
那什么是 EV 呢?说高级也不高级,说简单也不简单…… 看样子就像某个东西的缩写对吧。告诉你吧,是 Expect Value (期望收益)。是不是很水很容易理解啊。算也很好算。如果 P1 代表赢的概率, w1 代表赢的回报。P2,w2 是输的数据,不存在平手(注意这里的 w2 一般是负数)。则EV=P1×w1+P2×w2
如果 EV 的值是正的,说明可以搏一搏,说不定真变个摩托;如果是负的,那还是别博了比较好。有的时候 EV 为负但不必败(败家乐),但经过无数把游戏后是亏损的。
那么问题来了,赢的概率应该怎么算。
先介绍一个概念叫听牌。听牌的意思就是你等关键的一张牌来以后你就糊了。比如 9TJK 听 Q 成顺。如果此时是转牌圈,那么河牌是 Q 的概率是 52−2−44×100%=8%。但是在考场上肯定不能拿纸笔算(抠机子)啊,我们得钻点空子才行。
四二法则是用来快速计算听到牌概率的技巧,有 1% 左右的误差。如果此时你在翻牌圈听 N 张牌,那么转、河两张中出至少一张你听的牌的概率约为 4N%。
举个例子,你持 9T,翻牌 JJK,你听 Q。一共有 4 张 Q,那么听到牌的概率就是 16%。
这就是四二法则中的四。接下来说二。如果你在转牌圈听 N 张牌,那么你听到牌的概率约为 2N%。与上例类似,不再赘述。
于是我们写出了以下程序
#include<cstdio>
#include<cstdlib>
#include<cstring>
int poolsize;
int raisesize;
int chance;
int main(){
puts("");
while(1){
printf("\tPool Size: ");
scanf("%d",&poolsize);
printf("\n\n\tRaise Size: ");
scanf("%d",&raisesize);
printf("\n\n\tWin Chance: ");
scanf("%d",&chance);
printf("\n\n\n\tThe EV is %.2lf\n\n\n",(chance*poolsize-raisesize*(100-chance))/100.0);
printf("-----------------------------------\n\n");
}
}