今天在freeCodeCamp上做题时,有一道题目讲的是21点的算法,从网上搜索了一下21点的规则如下:
21点(blackjack)算法[转] -- Beat the dealer
来源: 顾斌梦追い虫的日志
21点的优选算法,据说把输牌的概率降低到了0.5%,研究一下。 首先学的是二十一点的规则。
我们可以看出,二十一点的结果很大程度上依赖于玩家的选择。象轮盘赌、百家乐那种游戏,玩家压上钱后,就只 好祈祷上帝,期盼好运降临,然后咣当一声,一拍两散,是死是活,当场就见分晓。
二十一点、牌九等游戏则不同,在发下牌后,玩家可以在一定程度上控制自己的 最终结果,因此如果应对得当,可以使自己的损失减到最小。这就是所谓“基本策略(Basic Strategy)”。 二十一点规则 1,游戏由玩家和庄家(即赌场的发牌员)对玩,看谁的牌面点数更靠近21点。但如果超过了21点,则称为“爆掉”,算输。其中花牌(J,Q,K)都算10点,A可以算1点,也可以算11点,看哪种情况更有利。玩家之间不做比较。 2,游戏开始时,所有玩家和庄家各拿两张牌,一般来说,是玩家两张牌牌面朝上,庄家一张牌面朝上,一张牌面朝下。 3,两张牌的点数,肯定介于2到21点之间。21点只可能是一张10(包括J,Q,K,下同)和一张A,这叫“天成(BlackJack,以下简称BJ)”,除非庄家也拿到了BJ,不然赢一倍半的赌注。
好吧,我们还是可以用判断语句来完成这个函数,我选择了用case语句来实现,具体代码如下:
function cc(card) { switch(card){ case 2: case 3: case 4: case 5: case 6: count++; break; case 10: case "J": case "Q": case "K": case "A": count--; break; } if(count>0){ return count+" Bet"; }else if(count<=0){ return count+" Hold"; } }
我们用case语句,当牌面为2,4,5,6时,count依次递增,
牌面为10,"J","Q","K","A"时count递减