電影 《決勝21點》里面的算法是怎么弄的?


以下回答引自知乎

注:由於10,J,Q,K點數都為十點,故在庄家准備足夠多副撲克牌時,視為等概率

則,此時摸到點數為10點(非嚴格為10的撲克牌面)為4/13

 

高低算牌法,在21點的游戲當中,2-9代表本身,10-K代表10,A可以做1或11。
我們將2-6當做小牌,7-9當做中立牌不算,10-A當做大牌。
一般賭場會使用4副撲克以上,其中10點的概率為4/13約等於30.76%,當前面出現的小牌多過大牌,比如多了10張,我們假設牌盒中共有4副牌,庄家已經發過了一半的牌,那么剩下的牌還有兩副共104張,2-6大約為35張,10-A大約為45張,那么10點的概率為36/104約等於34.61%,你拿到20或者21點的概率會提高,你9,10,11點加倍時,拿到19,20,21的概率會提高,同樣庄家爆牌的概率也會提高,我們的盈利就隨之提高。
這是一個很簡單的算法,當前面出現的小點越多的時候,我們的注碼可以相應的加大,《決勝21點》里面的孩子就是用這個方法算牌的。


以下回答扔來自知乎
 
作者:法外傘兵Bruce
鏈接:https://www.zhihu.com/question/23397478/answer/184674188
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

游戲由玩家和庄家(即賭場的發牌員)對玩,看誰的牌面點數更靠近21點。但如果超過了21點,則稱為“爆掉”,算輸。其中花牌(J,Q,K)都算10點,A可以算1點,也可以算11點,看哪種情況更有利。玩家之間不做比較。
2,游戲開始時,所有玩家和庄家各拿兩張牌,一般來說,是玩家兩張牌牌面朝上,庄家一張牌面朝上,一張牌面朝下。
3,兩張牌的點數,肯定介於2到21點之間。21點只可能是一張10(包括J,Q,K,下同)和一張A,這叫“天成(BlackJack,以下簡稱BJ)”,除非庄家也拿到了BJ,不然贏一倍半的賭注。
4,玩家在游戲中有如下選擇:
(1)要牌,直到他(或她,下同)認為自己的牌面離21點足夠近了。比如手頭的牌是4和5,加起來才9點,那么無論再加張什么牌,都不會爆掉,當然應該要牌。
(2)停牌,即不再要牌,比如手頭是張10和9,已經很接近21點了,就不用再要牌了。
(3)加倍,即加一倍賭注,再要且僅要一張牌。比如手頭是張4和7,這時要牌是肯定安全的,而且很可能拿到10或者其他點數較大的牌,一張就夠了,值得加倍。這只能在剛拿到兩張牌時使用,要過牌后就不能加倍。
(4)分牌,即拿到兩張點數相同的牌時,可以加一份賭注,把牌分為兩份,比如手頭是兩張8,加起來是16,非常糟糕的點數,這時就應該把牌分為兩個8,再要兩張牌來,很可能拿到10形成18點,就把壞牌變成好牌了。
(5)保險,即在庄家亮着的牌是A時,由於他拿到BJ的幾率很大,玩家可以下賭注一半的保險。如果庄家沒有拿到BJ,保險金就輸掉了,如果庄家拿到了BJ,付給玩家兩倍保險金。很多玩家在自己拿到BJ的情況下,會下賭注一半的保險,以保證自己能贏回一倍賭注,因為如果庄家沒有BJ,那他能贏賭注的一倍半,去掉輸掉的半倍保險,還贏一倍賭注;如果庄家有BJ,那他們牌面打平,但保險能賺回一倍賭注。
(6)投降,這時只輸一半賭注。如果自己的牌是10和6,庄家亮着的牌是A,那還是趁早投降好。
5,庄家在手頭的牌是A時,會問大家是否要保險,然后檢查自己的牌是否BJ。如果手頭的牌是10,也會檢查是否BJ,但這時玩家就不能買保險了。
6,如果玩家要牌爆掉,算輸,庄家當場收掉他的賭注。
7,當所有的玩家都做出選擇后,庄家的玩法是固定的:亮 出底牌,如果點數不到17點,則必須要牌,直到超過了16點或爆掉為止。
6,如果雙方都還沒有爆掉,則更接近21點的那個勝,如果雙方點數相同,則算打平。
在這些基本規則之上,各地的賭場還會有些變動,比如有的賭場在軟17點(A算11點時的點數稱為“軟”,比如A和6,就是軟17點)時停下,有的則必須繼續要;有的賭場連續分牌最多只能有四次,有的可以無限分下去;有的A分牌只能一次;有的賭場分牌后不許加倍;有的賭場不許投降;等等等等。
還有些變種的二十一點游戲,比如“雙亮(Double Exposure)二十一點”,就是庄家的兩張底牌都亮着,但如果雙方點數相同,算庄家贏。又如帶大小鬼(Joker)的二十一點,庄家拿到鬼牌得扔掉,玩家拿到鬼牌卻可以指定它的點數,比如湊成11點,或者當A用等等。
二十一點基本策略
規則為:庄家在軟17點時停止、無限分牌加倍、允許投降。
為了方便分析,我們先假設52張牌出現的概率始終相同,也就是說每張牌都是從一個無窮多副牌組成的牌盒里抽出來的,或者說前面出過的牌不影響后面的牌,換句話說,每張牌相互之間都是獨立的。
首先,一個明顯的結論是,每個點數出現的概率都是1/13,除了10出現的概率是4/13。這樣,如果庄家的亮牌是A,他實際拿到BJ的可能性是4/13,拿不到的可能性是9/13。玩家投保險,保中了的回報是雙倍保險金,沒中的話輸掉保險金,因此總預期收益是:
4/13 * 2 + 9 * 1/13 * (-1) = -1/13
也就是說,從概率上講,投保險是得不償失的,平均13次保險中,贏4次,輸9次,庄家占7.7%的優勢。所以,永遠不要買保險。
在二十一點中,玩家最大的劣勢來自於,如果玩家的牌爆掉的話,賭注當場輸掉,哪怕庄家隨后也爆掉。因此,如果玩家模仿庄家的玩法:16點或以下要牌,17點或以上停住,必輸無疑。
為此賭場在游戲里加入了各種功能:分牌、加倍、投降、玩家拿了BJ后贏一倍半,以吸引賭客。如果用正確的玩法,可以把庄家的優勢縮小到0.5%。這就是所謂“基本策略”。
在上述規則下,基本策略為:
庄家:2 3 4 5 6 7 8 9 10 A
玩家點數
<8>=17 S S S S S S S S S S
其中H表示“要牌(Hit)”,S表示“停牌(Stand)”,D表示“加倍(Double down)”,R表示“投降(suRrender)”。
以上的點數都是所謂“硬點數”,即不包括A或A算1點,以后如果不特別指明,各點都指“硬點數”。手中有A,而且A算11也不會爆掉,就是所謂“軟點數”,應該運用下面這個表格:
庄家:2 3 4 5 6 7 8 9 10 A
玩家
13 H H H D D H H H H H
14 H H H D D H H H H H
15 H H D D D H H H H H
16 H H D D D H H H H H
17 H D D D D H H H H H
18 S DS DS DS DS S S H H H
>=19 S S S S S S S S S S
“D”和“DS”都表示加倍,在不可以加倍的情況下,“D”表示要牌,“DS”表示停牌。
最后是分牌策略:
庄家:2 3 4 5 6 7 8 9 10 A
玩家
A,A P P P P P P P P P P
2,2 H H P P P P H H H H
3,3 H H P P P P H H H H
4,4 H H H P P H H H H H
5,5 D D D D D D D D H H
6,6 H P P P P H H H H H
7,7 P P P P P P H H H H
8,8 P P P P P P P P P P
9,9 P P P P P S P P S S
10,10 S S S S S S S S S S
其中P表示“分牌(Split)”。
這三張表並不難背,因為里面有許多規律,最顯著的就是有個分界線,橫亘於庄家亮牌是6點和7點之間。6點以下是庄家的壞牌,比較容易爆掉,對玩家有利,7點以上則對玩家不太利。我寫了個小程序,算了下庄家的各個亮牌所可能導致的最終結果的百分比:
亮牌 2 3 4 5 6 7 8 9 10 A
17: 13.9 13.5 13.0 12.5 16.8 37.0 12.9 12.0 11.1 13.0
18: 13.4 12.9 12.5 12.1 10.9 13.9 35.9 12.0 11.1 13.1
19: 12.8 12.4 12.0 11.6 10.3 8.0 12.9 35.1 11.1 13.1
20: 12.1 11.8 11.4 11.0 9.9 7.6 7.0 12.0 34.3 13.1
21: 11.4 11.2 10.8 10.5 9.4 7.0 6.6 6.1 11.2 36.2
爆掉: 36.4 38.3 40.3 42.2 42.8 26.4 24.6 22.8 21.2 11.5
由此再來看基本策略,就很好理解,也很好背了:
1,11點或更小時,總可以要牌,如果9點時庄家亮牌是3到6,10或11點時庄家亮牌比自己差,還可以加倍。
2,17點或更多時,總該停住。
3,12點到16點間,如果庄家亮牌是6或更小,就該停住,不然就該要牌。唯一的例外是12點對庄家亮牌2和3點時也該要牌。另外在自己拿到16點而庄家是9、10、A,或自己拿到15點,而庄家是10點時,應該投降。
對於嫌麻煩的人,記住以上三點,就已經夠了,因為這張表涵蓋了大多數情況,拿到A和兩張同樣點數的牌的可能性不是那么大。但是如果想少輸點錢,還是必須把后兩張表也背下來。好在它們也很有規律,比如軟13到18點對庄家6點或更小的亮牌時,可以考慮加倍,其判斷梯形為:不太有把握的軟13、14點只對庄家的5、6點加倍,軟15、16擴展到庄家的4點,軟17、18則擴展到3點。
二十一點算牌法
二十一點能夠算牌,是因為我們在討論“基本策略”時提出的一個假設不成立:
假設52張牌出現的概率始終相同,也就是說每張牌都是從一個無窮多副牌組成的牌盒里抽出來的,或者說前面出過的牌不影響后面的牌,換句話說,每張牌相互之間都是獨立的。
顯然,不可能有這樣的由無窮多副牌組成的牌盒,前面出過的牌總會影響后面的牌。在算牌法剛出現的時代,賭場仍然使用一副牌來玩二十一點,那么這個影響就更明顯。比如,發牌員發出牌來,你拿到兩個10(包括J、Q、K),庄家亮牌也是10,翻出底牌來還是10,那么下一輪里10出現的概率已不再是4/13,而是12/48,即1/4,略低於4/13。同樣的,其他點數出現的概率也已不再是1/13,而是1/12。
象輪盤賭這類游戲,每次輪盤轉出什么結果,和上一次完全沒有關系。還有牌九這類游戲,每玩過一輪,就重新洗牌。這些游戲里,每把賭博之間都是互相獨立的。而二十一點的各把之間,在重新洗牌之前,不是獨立的。前一把出現了什么牌,會影響到下一把。因此,如果我們能記住前面出過什么牌,就能大致預測以后的賭局走勢,從而調整自己的賭注,在對自己有利時下大注,在對庄家有利時下小注或不下注,就能在這個游戲里占到優勢。
UCLA的數學教授愛德華·索普(Edward Thorp)在六十年代初發明了二十一點算牌法。他注意到,如果二十一點里10出現的概率增高,對庄家是不利的,因為庄家在十六點及更低時必須要牌,10越多,就越容易爆掉,而對玩家來說,則更容易拿到BJ,贏一倍半的錢。所以他用一種“算10法(10-Count)”,計算剩下的牌中10的比例。正常情況下,這個比例應該是4/13,庄家占優勢。但當前面出掉很多小牌,10的比例達到1/3時,優勢就轉移到玩家這邊來了。
索普的運氣不錯,那時計算機也發明出來了,他找到IBM公司里的朋友,寫了個程序來驗證自己的算牌方法。那時的計算機跟今天比起來,還是速度低下、體積龐大的蠢物,足足運轉了七天七夜,終於證明了這個方法是可行的。索普又自己到賭場里親自實踐,結果果然大贏特贏。
1962年他出版了《打敗庄家(Beat the Dealer)》一書,向公眾介紹了自己的算牌法。這不再是我們慣見的蘿卜賭經,而是有數學基礎的方法,因為它在不同的贏牌概率P(i)時下不同的賭注B(i),雖然總的勝利概率之和ΣP(i)仍然小於1/2,但只要在P(i)大時下大的B(i),P(i)小時下小的B(i),就能使總回報ΣR(i)P(i)大於ΣB(i)。
“算10法”比較難操作,需要極高的心智和注意力。好在群眾的智慧是無窮的,算牌手們沿着索普指定的方向走下去,已經把算牌方法演進得越來越簡單實用(索普本人在60年代后期就淡出了賭博界,帶着他在賭場贏來的大筆資金,進入股票市場,運用他的數學知識,現在已成為超級巨富)。
我使用的是一種叫“高低法(High-Low)”的算牌法。在游戲過程中,我們把每一張出現的2,3,4,5,6都算+1點,7,8,9算0點,10,J,Q,K,A算-1點,將各點相加,結果越大,就表示前面出現過的小牌越多,對玩家越有利。反過來,如果結果是個負數,就表示前面出過的大牌比小牌多,對庄家有利。
比如前面出現的牌是:
4,9,10,5,J,A,8,10,Q,2,6,K,J,7
那么點數就是4張小牌減7張大牌,是-3。當然,在游戲過程中,你不可能叫庄家把牌局暫停,讓你從容加減。你必須在每張牌出來時,就在心里默算點數。比如在上面的例子里,從第一張牌出現開始,你就應該在心里默算出:
1,1,0,1,0,-1,0,-2,-3,-2,-1,-2,-3,-3
在實際運用中,還可以采取兩張牌一計的技巧,因為庄家發牌時一般速度較快,這樣可以方便地把很多同時出現的大牌和小牌抵消不計,提高了算牌速度,減少了可能的計算錯誤。比如在上面的例子里,如果兩張牌一計,那就是:
1,1,-1,-2,-2,-2,-3
如果是一副牌,-3已經是很糟糕的點數了,這時應該下最小注,或者停止不玩。不過一般來說,現在的賭場都使用六到八副牌,那么在六副牌312張牌內,發出14張牌,還剩298張牌,平均每副牌的點數是(-3)×52/298=-0.5,還算可以忍受。
顯然,在每一盒牌(“盒(shoe)”是指一盒牌從開始發牌到洗牌的過程,這一盒牌里可能有六副、四副、八副或其他副數的牌)的開始,由於大部分牌還未發出,因此平均點數總是在0左右。要到牌盒里剩下的牌不多時,平均點數才可能比較顯著地偏離0。所以算牌手在算牌時都會尋找合適的賭桌,一方面要找人少的桌子,因為人越少,你在單位時間內玩的次數越多,實際收益才會更逼近期望值;另一方面要找切牌少的發牌員,因為該切多少牌,賭場只有個大概的規定,具體執行還是要靠發牌員的覺悟,所以同一家賭場里,不同的發牌員切出的牌來常會差很多。
在點數變大時,該怎么提高賭注,每個算牌手都有自己的習慣和算度。貝爾實驗室的J.L.Kelly推導出,在理論上,如果你占A的優勢,本錢總數為R,那么最優賭注是B = A * R。
比如你有一萬塊錢的本錢,現在你占1%的優勢,那么就應該在這把壓下一百塊錢。這種下注法稱為Kelly法,是在理論上可以獲得最大回報的方法。但在實踐中,Kelly法過於冒險,只可視為下注時的上限。
斯坦福·王(Stanford Wong)在《二十一點的秘密(Blackjack Secrets)》里說,平均點數每高一點,可增加約0.5%的優勢。他是二十一點算牌界里最有名的祖師爺級人物之一,甚至排在愛德華·索普之前,第一個進入了“二十一點名人堂(Blackjack Hall of Fame)”。我第一次看到他的名字時,還以為他是個華裔,后來在電視上看到他,才發現他是個白人老頭。斯坦福·王其實是他的藝名:他畢業於斯坦福大學,再加上“王”這個很有氣勢的東方姓氏。他對中國文化好像很感興趣,自己創辦了一家出版社,就叫“Pi Yee”——念念看吧:什么?辟易?便宜?別數典忘祖了,人家這叫“牌藝出版社”!
按照他的說法,在0點時,庄家占0.5%的優勢。到了1點,雙方差不多扯平。平均點數升到2時,玩家就已經占0.5%的優勢,可以提高賭注了。如果按照Kelly法,平均點數為7時,玩家占3%的優勢,就得將自己全部本錢的3%投進去,顯然太過冒險了。
在點數為0或負數時,玩家應當下最小賭注。當然,最好是干脆不玩,坐等點數變正。早期的那些算牌手就是這么做的,但現在的賭場里,從游弋在各桌間的桌面經理,到高懸在天花板上的監視器,都虎視耽耽地監視着每個賭徒的行為。如果總是點壞不壓、點好猛壓,還不如直接在臉上寫五個大字:“我是算牌手”,說不定還暴露得晚些。
算牌本身並不難練,難的是和賭場的斗智斗勇。在《打敗庄家》剛出版時,它轟動一時,很快成為暢銷書,激勵了無數賭徒涌向賭場,一試身手。賭場對此大為恐慌,有些賭場甚至關閉了二十一點賭桌。但是,很快他們就又恢復了鎮定,因為他們發現,涌來的大批賭徒中,只有極少數人真正掌握了算牌法,其他大多數人只不過是一知半解、道聽途說的蘿卜。索普這本書為極少數人提供了打敗庄家的方法,但對大多數人來說,實際效果卻是個二十一點的廣告,讓他們自以為也能夠在二十一點上贏錢。這是個賭場夢寐以求的廣告,是他們自己無論花多少錢都做不來的廣告。
在剛開始時,算牌還是個新鮮事物,沒有這方面的法律規定,開賭場的又多是黑社會,一旦發現算牌手,一律當老千處理,痛打一頓后扔到臭水溝里。后來大家總算對算牌達成了共識:這是樣技術活兒,是在遵守賭場規則的情況下,靠自己的聰明才智來賭博的一種方式;同時各大賭場也多被華爾街的金融巨頭接管,開始西裝領帶的管理方式,擺開堂堂之陣來賺錢,於是算牌手總算不再有人身危險,但賭場既然是人家的私有財產,就有權把某些他們不歡迎的人拒之門外。因此,對一個算牌手來說,難的不是算牌,而是如何不被賭場弄進黑名單
 
 
附上擊敗庄家 中文版 由某博主翻譯
http://blog.sina.com.cn/s/blog_7643a1bf0101d9dv.html


免責聲明!

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



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