二十一點算法 --freeCodeCamp


今天在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遞減


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM