概率的算法算法

关于德州扑克的概率基本算法 其实每个高手都在算每张牌的概率
首先,有个概念叫出牌。所谓出牌,就是有多少张牌能够做成大牌。比如你有2张同花,前三张有2张同花。一副牌有13张同花,所以你还有13-2-2=9张出牌才能做成同花。明白了出牌,概率就比较好算了。这就是所谓的4/2法则。如果你要等转牌和河牌2张牌做牌,那么概率就是出牌数乘以4,如果你只能等1张牌做牌,概率就是出牌数乘以2。比如做同花,前三张和手牌有4张花的。转牌出花的概率是 9*2=18%,转牌+河牌出花的概率是9*4=36%。两头的顺子有8张出牌,转牌出顺的概率是8*2=16%,转牌+河牌出顺德概率是32%。有顺有花的话按照出牌和4/2法则自己估算所谓德州扑克的概率,简单说,就是等来某种获胜牌型的可能性(成牌概率),与底池提供筹码(底池概率)之间的比较,如果底池筹码足够多,高于成牌可能,就玩下去,反之就弃牌。&德州扑克底池概率(Pot Odds)&底池概率(Pot Odds)是已有的底池筹码与你当前要下注额之间的比率。比如当前底池筹码共计$100,你需要下注$10,那么底池概率即为10:1。底池大小对于决定是否跟注很重要。&德州扑克成牌概率(Odds)&这是凑成某种能够获胜牌型的可能性。比如,你的起手牌有两张红桃,翻牌圈又出现两张,那么,在转牌中等来第五张红桃的可能约为20%,即五分之一,每五次会成一次。但我们习惯用不能成牌的次数来表示,即称为成牌概率。在本例中,成牌概率大致为4:1,意思是,每五次中有4次不能成牌,有1次能成。 成牌概率是如何计算的呢?很简单,在所有未翻开的牌中,不能帮助你的牌的数量,与能够帮助你的牌(即可等牌)的数量之间的比率,即算出成牌概率。例如,起手牌为6? 7?, 翻牌圈为A? T? 5?,目前总共有47张牌未见,其中有9张红桃将助你成为同花牌,38张不能帮助你。那么,在转牌圈中成为同花牌的概率是4.2:1(38/9);两头顺子(如89TJ)牌型有8张可等牌,成牌概率是4.9:1(39/8);同理,单头顺子(如89JQ)牌型有4张可等牌,成牌概率为10.75:1(43/4);&在实战中,你显然不用每次重复这个计算过程。你所要做的,就是记住APA提供的成牌概率统计表,列明了可等牌数量所对应的成牌概率。&德州扑克可等牌(Out)&这是计算成牌概率时的一个重要概念。指将在接下来的投注圈中出现,能使你凑成某种获胜牌型的来牌。 比如,起手牌是A? T?,翻牌又出现2张红桃,仍需要1张来助你最终成牌。目前,还有9张红桃尚未出现,那么你就有9张可等牌。如果你预计再来一张A也能获胜,那你就有12张可等牌,即9张红桃和3张A。&德州扑克概率的实际应用&现举一例,说明如何应用以上概率知识。你在$1/$2的有限注游戏,坐在按钮(小盲注紧右边)位置,手持K? T?,牌面来到转牌圈,为9? 2? 4? A?,你仅剩的一个对手下注$2后,底池共有$10。为了简化本例,我们假设对手现在凑成了一对A,但如果河牌(River)来另一张红桃,他将弃牌,那么,现在你会跟注,来等待河牌的那张红桃吗? 我们知道,持有4张同花,成牌概率约为4比1;目前你需要投注$2,来搏取$10的底池,底池概率为5:1,高于成牌概率,所以应当玩下去,跟注是正确的。但如果底池仅有$7呢?底池概率则变成3.5:1, 低于成牌概率,那么就应当弃牌。等牌常见牌型悬牌轮成牌可能性转牌不成牌的可能性转牌轮成牌可能性河牌不成牌的可能性&&%X:1%X:120&42.55%1.3543.48%1.3019&40.43%1.4741.30%1.4218&38.30%1.6139.13%1.5617&36.17%1.7636.96%1.7116&34.04%1.9434.78%1.8815等同花加上两张最大单牌31.91%2.1332.61%2.0714&29.79%2.3630.43%2.2913&27.66%2.6228.26%2.5412&25.53%2.9226.09%2.8311&23.40%3.2723.91%3.1810&21.28%3.7021.74%3.609等同花19.15%4.2219.57%4.118等8张的顺子17.02%4.8817.39%4.757&14.89%5.7115.22%5.576&12.77%6.8313.04%6.675&10.64%8.4010.87%8.204卡门顺子8.51%10.758.70%10.503&6.38%14.676.52%14.332&4.26%22.504.35%22.001&2.13%46.002.17%45.00&的,数学的确在扑克里扮演一个重大的角色。但你需要知道的不是像数学般艰深的,所有复杂的那些,——它没什么仅要一个四年级合理的能力用一点点练习就能处理。最重要的——最难的——琐事是计算彩池赔率和隐含赔率。所有这些都是需要的,不过,是简单的加法,乘法,和除法。更高的数学和统计向导,以往任何时候都很少是必要的,在玩的过程中。这章将帮助指引你通过(那些)将使你成为更好的无限德州扑克玩家的数学概念。我尽我所能使这些页尽可能的直截了当和简单易懂。如果你觉得你迷惑了,来个深呼吸,离开筹码,铅笔和纸,从实例中走开几次。如果感觉太受挫,放松跳到关于心理的下一章。经过些时间,扑克数学变成第二本能,你将几乎总是做正确的事。4-2法则我已经发现一个快的和容易的途径指出,多大可能我将抽中我的赢牌在翻牌后。首先我计算我的“出牌”,或者将给我一个赢手的牌。例如,让我们说我拥有 T(c)9(d)而我认为我的对手是A-K(当它翻开,是A(s)K(d))。翻牌来了A(c)T(d)7(h)。我的对手领先,当然了,翻到一对A,但这有五张牌——余下的两张十和三张九——将让我领先。换句话说,我有五张出牌。我能计算在转牌或河牌抓到一张我的牌的近似的概率,通过用四乘以出牌数。在这个例子中:5×4=20%根据这个“四法则”我有大概20%的机会抓到一张赢牌在转牌或河牌。实际翻出的概率是21.2%,一个微小的不同无关宏旨。仅有河牌要来,“四法则”变成“二法则”。我们说转牌来了8(c)。我们找的五个出牌没有来,但它让我们的手牌变成两头顺子兆牌能用任何一张J或6凑成顺。增加的八个出牌总共给我们十三张出牌。用“二法则”:13×2=26%实际翻出的百分比是29.5%,但再次的,那已经足够接近。若纯粹为了坚持精确,我在书的末尾收录了表格列出了精确的百分比。看270页的“出牌”。(注释:“四法则”被轻微地打破在有大数量的出牌时。当有十五个或更多的出牌,公式对赢的机会估计过高,但当有那么多出牌,赢的机会如此大使得将几乎没有问题。加上,你通常仅在Omaha里有那么多出牌,在无限德州扑克里不会。)
TA的推荐TA的最新馆藏[转]&[转]&问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
js按照配置的概率生成,概率规则如下:
1------------50%
2------------30%
3------------15%
5------------5%
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
function prizeRand(oArr) {
var sum = 0;
var rand = 0;
// 每次循环产生的随机数
var result = 0; // 返回的对象的key
console.log(oArr);
// 计算总和
for (var i in oArr) {
sum += oArr[i][0];
// 思路就是如果设置的数落在随机数内,则返回,否则减去本次的数
for (var i in oArr) {
rand = Math.floor(Math.random()*sum + 1);
if (oArr[i][0] &= rand) {
result = oArr[i][0];
sum -= oArr[i][0];
var oArr = {'5':[5, 'Mac'], '3':[15, 'iPhone'], '2':[30, 'iPad'], '1':[50, 'iWatch']};
console.log(prizeRand(oArr));
我这个是从PHP那个重新写成js的,可能不是那么精确。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
function myRandom() {
var rand = Math.random();
if (rand & .5) return 1;
if (rand & .8) return 2;
if (rand & .95) return 3;
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个算法叫「轮盘赌算法」,在遗传算法中很常用。
同步到新浪微博
分享到微博?
Hi,欢迎来到 SegmentFault 技术社区!⊙▽⊙ 在这里,你可以提出编程相关的疑惑,关注感兴趣的问题,对认可的回答投赞同票;大家会帮你解决编程的问题,和你探讨技术更新,为你的回答投上赞同票。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App
SegmentFault
一起探索更多未知【图文】算法设计与分析-概率算法经典讲解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
算法设计与分析-概率算法经典讲解
上传于|0|0|文档简介
&&算法设计与分析,研究生课程重点内容,概率算法部分。很经典。
大小:2.21MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢无路可走了,讨教一概率算法 - ITeye问答
0 出现的概率为50%
1 出现的概率为35%
2 出现的概率为15%
在这3个数中按以上概率取其中的一个数。
问题补充:0? 50%
0 出现的概率为50%
1 出现的概率为35%
2 出现的概率为15%
在这3个数中按以上概率取其中的一个数。
谢谢bohemia,刚才我也弄了一个,呵呵,过来一看差不多。呵呵。
public class RandomTest {
private static Random RANDOM = new Random();
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Integer(25));
list.add(new Integer(40));
list.add(new Integer(35));
Collections.sort(list);
System.out.println(list);
int a = ((Integer) list.get(0)).intValue();
int b = ((Integer) list.get(1)).intValue();
int c = ((Integer) list.get(2)).intValue();
System.out.println("几率最大的数:" + c);
System.out.println("中间数:" + (c + b));
Map map = new HashMap();
int x = 0;
int y = 0;
int z = 0;
for (int i = 0; i & 1000000; i++) {
int k = RANDOM.nextInt();
int j = Math.abs(k % 100);
if (j &= c) {
map.put("0", new Integer(++x));
} else if (j & c && j &= (c + b)) {
map.put("1", new Integer(++y));
} else if (j & (c + b) && j & (a+b+c)) {
map.put("2", new Integer(++z));
System.out.println(map);
问题补充:0? 50%
0 出现的概率为50%
1 出现的概率为35%
2 出现的概率为15%
在这3个数中按以上概率取其中的一个数。
?问题补充:0
0 出现的概率为50%
1 出现的概率为35%
2 出现的概率为15%
在这3个数中按以上概率取其中的一个数。
谢谢bohemia,刚才我也弄了一个,呵呵,过来一看差不多。呵呵。
public class RandomTest {
private static Random RANDOM = new Random();
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Integer(25));
list.add(new Integer(40));
list.add(new Integer(35));
Collections.sort(list);
System.out.println(list);
int a = ((Integer) list.get(0)).intValue();
int b = ((Integer) list.get(1)).intValue();
int c = ((Integer) list.get(2)).intValue();
System.out.println("几率最大的数:" + c);
System.out.println("中间数:" + (c + b));
Map map = new HashMap();
int x = 0;
int y = 0;
int z = 0;
for (int i = 0; i & 1000000; i++) {
int k = RANDOM.nextInt();
int j = Math.abs(k % 100);
if (j &= c) {
map.put("0", new Integer(++x));
} else if (j & c && j &= (c + b)) {
map.put("1", new Integer(++y));
} else if (j & (c + b) && j & (a+b+c)) {
map.put("2", new Integer(++z));
System.out.println(map);
问题补充:0? 50%
0 出现的概率为50%
1 出现的概率为35%
2 出现的概率为15%
在这3个数中按以上概率取其中的一个数。
谢谢bohemia,刚才我也弄了一个,呵呵,过来一看差不多。呵呵。
public class RandomTest {
private static Random RANDOM = new Random();
public static void main(String[] args) {
List list = new ArrayList();
list.add(new Integer(25));
list.add(new Integer(40));
list.add(new Integer(35));
Collections.sort(list);
System.out.println(list);
int a = ((Integer) list.get(0)).intValue();
int b = ((Integer) list.get(1)).intValue();
int c = ((Integer) list.get(2)).intValue();
System.out.println("几率最大的数:" + c);
System.out.println("中间数:" + (c + b));
Map map = new HashMap();
int x = 0;
int y = 0;
int z = 0;
for (int i = 0; i & 1000000; i++) {
int k = RANDOM.nextInt();
int j = Math.abs(k % 100);
if (j &= c) {
map.put("0", new Integer(++x));
} else if (j & c && j &= (c + b)) {
map.put("1", new Integer(++y));
} else if (j & (c + b) && j & (a+b+c)) {
map.put("2", new Integer(++z));
System.out.println(map);
采纳的答案
public class TestRandom{
public static void main(String[] args){
int a = 50;
int b = 35;
int c = 15;
int a2 = 0;
int b2 = 1;
int c2 = 2;
Map result = new LinkedHashMap();
for(int i=0; i&a; i++){
result.put(""+i,""+a2);
for(int i=a; i&a+b; i++){
result.put(""+i,""+b2);
for(int i=a+b; i&a+b+c; i++){
result.put(""+i,""+c2);
System.out.println("Result:"+result);
System.out.println("随机数:"+result.get(""+(int)(Math.random()*100)));
不知道行不行;
呵呵.学习参考;
已解决问题
未解决问题

我要回帖

更多关于 概率算法与近似算法 的文章

 

随机推荐