當前位置:首頁 » 操作系統 » 撲克統計演算法

撲克統計演算法

發布時間: 2023-05-16 15:59:28

Ⅰ 十三張撲克演算法

積分規則演算法如下:

1、牌面大小順序:A>K>Q>J>10>9>8>7>6>5>4>3>2。

2、牌型大小順序:一條龍>同花順>四條>葫蘆>同花>順子>三條>兩對>對子>散牌(烏龍)。

3、贏一墩:同一墩,大於其他某個玩家,自己加1注(頭墩加1注,中墩加2注,底墩加3注)。

4、輸一墩:同一墩,小於其他某個玩家,自己減1注(頭墩減1注,中墩減2注,底墩減3注)。

5、強碰(打和):同一墩,與其他玩家大小一樣,自己加0注。

游戲規則:

四人中一人為莊家,(也可以四人對比,) 莊家把除去大小王的一副牌牌分成四份,每份十三張。開牌前,各閑家向莊家下注。

各人把十三張牌排成三段(道),稱頭(道)、二道及尾(道)。頭有三張,二道及尾各五張。頭道必須小於二道,二道必須小於尾道,否則稱為「相公」。凡「相公」者全賠。

頭段因為只有三張牌,因此不算順、花。只可能是不成花式(稱無頭),一對或三條。各人排好牌後,打開牌跟莊家比較大小。頭跟頭比,二道跟二道比,尾跟尾比。

比較時,先比牌型。牌型相同時,比點數。部分玩法的規則,比點數時由最大點數的牌比起,相同時比第二大的牌,如此類推。倘若完全相同,比最大點數牌的花色。

部分玩法的規則訂成對莊家稍為有利:只比點數最大的一隻牌。倘若相同,一律由莊家勝。任何一方遇上以下的組合通吃,稱為「報到」。

Ⅱ 打迷糊撲克牌怎麼算賬

撲克牌的總點數怎麼算的,我的演算法是撲克牌的點數有A,K,Q,J,10,9,8,7,6,5,4,3,2,1點,J,Q,K分別代表11點,12點,13點,另外還有大小王,大小王都代表0點,我的演算法就是把以上數字分別相加,其結果是91點,撲克牌又分為紅桃,黑桃,方塊,梅花,就用91X4=364,大小王為零點,就不相加了。這就是我的演算法、根據不同的玩法,可能出現別的演算法,就不一一敘述了。

Ⅲ 請教關於撲克的演算法

我代碼已經寫的有些眉目了,隨機發牌已經寫完,擺放演算法在紙上畫出來了應該沒什麼大問題,代碼明天寫,明天下班繼續回來看看,應該能搞定。

到時候思考過程我都會寫出來,代碼部分會放到我的空間,敬請留意。

回答者:風騷的可樂 - 千總 四級 12-13 01:40
----------------------------

問題描述:

列印3行,每行9張撲克,用戶隨機記錄一張之後輸入該撲克所在的行號(1-3)
程序打亂順序兩次,用戶再輸入所記錄的撲克在新的矩陣中的行號,也是兩次。
程序給出准確結果。

--------------------------------------------------------------

分析:

假設:54張撲克對應54個整數,隨機抽取27個排成矩陣。
假設:第i次打亂之後的矩陣為M(i),用戶第i次輸入的行號為L(i)。這里i取1,2或3。

進行第一次打亂,我們將得到用戶輸入的兩個碰培數,L(1)和L(2)。此時,我們需要保證同時在M(1)中第L(1)行,且在M(2)中第L(2)行的元素足夠

少,假如這時候滿足條件的數組是A(1),其中含元素N(1)個。
那麼我們再進行第2次打亂,用戶輸入L(3)。那麼這時候,我們要保證,同時在M(3)中第L(3)行,且在數組A(1)中的元素,有且僅有1個,也就

是N(2)必須為1。

--------------------------------------------------------------

來看一個例子:

假設有如下的整數矩陣
[1] [2] [3]
[4] [5] [6]
[7] [8] [9]
假定我記錄了8,那麼L(1)=3,那麼程序應該知道,用戶記錄的數字要麼是7,要麼8,要麼9。這時候需要把這3個數放到不同的3行里,這樣下

次用戶輸入行數就搏棗能確定兩次的交集了。
看看這種笑銀唯移位:
[1] [5] [9]
[4] [8] [3]
[7] [2] [6]
如果擁護輸入L(2)=2,程序將可以直接判定,第一次在{ 7,8,9 }中,且第2次在{ 4,8,3 }中的,必然是8這個數。
同理,我們也可以這樣移位:
[1] [8] [6]
[4] [2] [9]
[7] [5] [3]
這樣,用戶的輸入就應該是L(2)=1,判定方式同上類似。
可以得出結論,對於3*3的矩陣,可以通過2次判定得出結果。

下面我們把結論推廣到27個數:
假定有如下的9*3矩陣
[T1] [T2] [T3]
[T4] [T5] [T6]
[T7] [T8] [T9]
其中,Ti(i=1~9)分別是3*1的矩陣,我們可以通過L(1)和L(2)確定i,因為Ti只有1行3個數,所以後面可以直接通過以上的「按列移位」方法來

確定具體是哪個數。

--------------------------------------------------------------

下面給出測試代碼,其中有部分變數和注釋是沒有實際意義的,如果你仔細看過,相信很容易將他們挑出來刪除掉。

代碼說明:
(1) 為了方便,我沒有將關鍵代碼寫成函數形式,如果寫成函數形式的話會比較便於推廣到n,而不僅僅局限於27個數。
(2) 為了方便,我沒有寫整數數組與撲克牌的轉換代碼,實際上這部分功能可以簡單的通過數組對應來實現,請自行完成。
(3) 為了方便,代碼中用到很多swap,實際上,應該使用自己編寫的交換函數來實現這個功能,為了擴展方便,swap的參數已經被寫成有規律

的形式
(4) 調試環境:VC6_SP6+WinXP,轉載請註明出處:http://hi..com/crazycola,代碼開放,抄襲可恥

#include <time.h>

#include <iostream>
#include <cstdlib>
#include <iomanip>

using namespace std;

void printArr(const int* pArr)
{
for( int i=0; i<3; i++ )
{
for( int j=0; j<9; j++ )
cout << setw(3) << pArr[i*9+j] << " ";
cout << endl; // 抄襲可恥
}
}

void main()
{
int line = 0;

srand( (unsigned)time( NULL ) );
int *iArr = new int[27];

int tag = 0;
for( int i1=0; i1<27; i1++ )
{
char cola_temp1 = 'x'; // when you just this without going through
iArr[i1]=1+rand()%54; // you'll be dammed
if( i1==0 ) continue;
do {
tag = 0;
for( int j=0; j<i1; j++ )
if( iArr[j] == iArr[i1] )
{
iArr[i1]=1+rand()%54;
tag = 1;
}
} while( tag==1 );
// cout << iArr[i1] << endl;
}

printArr(iArr);
char cola_temp2 = 't';
cin >> line; // first

int *iArr2 = new int[9];
for( int i3=0; i3<9; i3++ )
iArr2[i3] = iArr[(line-1)*9+i3]; // aha, it's sunny outside

swap(iArr[ 0*9+ 3],iArr[ 1*9+ 3]); swap(iArr[ 0*9+ 4],iArr[ 1*9+ 4]); swap(iArr[ 0*9+ 5],iArr[ 1*9+ 5]);
swap(iArr[ 0*9+ 3],iArr[ 2*9+ 3]); swap(iArr[ 0*9+ 4],iArr[ 2*9+ 4]); swap(iArr[ 0*9+ 5],iArr[ 2*9+ 5]);

swap(iArr[ 0*9+ 6],iArr[ 2*9+ 6]); swap(iArr[ 0*9+ 7],iArr[ 2*9+ 7]); swap(iArr[ 0*9+ 8],iArr[ 2*9+ 8]);
swap(iArr[ 0*9+ 6],iArr[ 1*9+ 6]); swap(iArr[ 0*9+ 7],iArr[ 1*9+ 7]); swap(iArr[ 0*9+ 8],iArr[ 1*9+ 8]);

printArr(iArr);
cin >> line; //second

int smallMatrixFoot = -1;
int *iArr3 = new int[3];
char cola_temp3 = '5'; // 抄襲可恥
for( int i4=0,k=0; i4<9; i4++ )
for( int j=0; j<9; j++ )
if( iArr2[j]==iArr[(line-1)*9+i4] )
{
if( k==0 ) smallMatrixFoot = (line-1)*9+i4; // save for future use
// smallMatrixFoot % 9 = col_num, and ( smallMatrixFoot - col_num

) / 9 = row_num
iArr3[k++] = iArr2[j];
}
// -- start: for test only
/*for( int dbg01=0; dbg01<3; dbg01++ )
cout << iArr3[dbg01] << " ";
cout<<endl;*/
// --end: for test only

int col_num = smallMatrixFoot % 9;

swap(iArr[ 0*9+col_num+1],iArr[ 1*9+col_num+1]); swap(iArr[ 0*9+col_num+1],iArr[ 2*9+col_num+1]);
swap(iArr[ 0*9+col_num+2],iArr[ 2*9+col_num+2]); swap(iArr[ 0*9+col_num+2],iArr[ 1*9+col_num+2]);

printArr(iArr);
char cola_temp = '0';
cin >> line; //third

int bingo = -1;

for( int i5=0; i5<3; i5++ )
if( iArr3[i5]==iArr[(line-1)*9+col_num+i5] )
bingo = iArr3[i5]; // i'm not so happy
// -- start: for test only
/*else
cout << iArr3[i5] << "!=" << iArr[line*9+col_num+i5] << endl;*/
// --end: for test only

cout << endl << "wow, you've remembered " << bingo << " !" << endl;

delete [] iArr3; iArr3 = NULL;
delete [] iArr2; iArr2 = NULL;
delete [] iArr; iArr = NULL; // 抄襲可恥
}

Ⅳ 廣東撲克牌的擺八張點玩噶~~如何計法啊~

頭一對按照對的大小計算即對2為兩注對3為三注,對A為14注。

撲克牌,代指兩種含義:一是指紙牌;二是泛指以用紙牌這種游戲道具來玩的游戲,稱為撲克游戲,如德州撲克。一副撲克牌有54張牌,其中52張是正牌,另2張是副牌。

52張正牌又均分為13張一組,並以黑桃、紅桃、梅花、方塊四種花色表示各組,每組花色的牌包括從1-10(1通常表示為A)以及J、Q、K標示的13張牌,玩法千變萬化,多種玩法。

Ⅳ 哪位高手能提供一個撲克牌算24點的演算法思路

我們來看看「算24點」的游戲規則:一副牌中抽去大小王剩下了52張,其中J、Q、K可以當成是11、12、13,也可以都當成1。任意抽取4張牌,用加、減、乘、除(可加括弧)把牌面上的數算成24。每張牌必須用一次且只能用一次。誰先算出來,四張牌就歸誰,如果無解就各自收回自己的牌,哪一方把所有的牌都贏到手中,就獲勝了。



02

一般情況下,先要看4張牌中是否有2,3,4,6,8,Q ,如果有,考慮用乘法,將剩餘的3個數湊成對應數。如果已有兩個6,剩下的只要能湊成3,4,5都能算出24,已有兩個8,剩下的只要能湊成2,3,4,已有兩個Q,剩下的只要能湊成1,2,3都能算出24,比如(9,J,Q,Q)。如果沒有2,3,4,6,8,Q,看是否能先把兩個數湊成其中之一。

Ⅵ 撲克牌的演算法是什麼

撲克牌公式一定要背下來是EV等於A乘Pa加B乘Pb加C乘Pc。EV是ExpectedValue的縮寫,翻譯過來就是期望值,這個概念我們在小學或者初中就已經學過了,是指在一個離散性隨機變數結果在長期中的均值。

撲克牌公式特點

ABC分別代表不同的結果的值,用在撲克里就代表每州碰種情況其可能的贏得或損失的籌碼量損失的用負數表示,而P則表示各種情況相對應的發生概率,撲克無非就是個做選擇的游戲,銷毀我們只要將每種選擇的EV算出來,然後進行比較就能找出最優的冊斗談選擇。

為了能更好地找出ABCP,發展出或者是借用其他領域的很多概念,底池賠率就是其中之一,有的地方翻譯成底池成敗比,底池賠率是指底池中的記分牌與你需要放入的記分牌的比值,有了這個公式我們就能快速算出我們跟注需要的最小勝率。

Ⅶ 德州撲克用戶入池率、勝率、加註率等的計算方法是什麼

用戶入池率、勝率、加註率等的計算方法是:加註率=勝率/入池率。

在翻牌的時候,計算自己有多少可能會拼到同花或順子,可以這樣算:補牌數乘以 4。例如你有6789,補牌就是5和10,假如檯面沒有出現這兩張牌,你的補牌就有八張,乘以4之後,概率就是32%。

撲克技巧:

牌桌上的加註大有講究,不是隨隨便便的情況就可以加註。為了保證自己的利益最大化,加註可以起到縮小陣容的作用;過牌加註是為了締造底池;價值加註;信息加註。很多選手在加註時是沒有注意到這些的,所以就和大家來說說這四種特殊的情況。

了解自己的手牌概率,如果能從對方check、bet、call、raise還有他們的數額裡面猜到對方有什麼牌,進而調整概率和下注的數量。

Ⅷ 關於撲克牌的一個演算法題,有人會嗎

這個問題其實就是求張數最少的牌備信號的問題。
不知道樓主用什麼語言來寫

我的思路是這樣的:
定議一個二維數組如:a(4,13) 來保存張數。唯滾掘
然後對所有牌號進行統計,至於如何統計,可以將第一行去掉,把每行第一個數去掉,然後把相同花色的數字合並字元串。再把字元串指核轉為數組,這樣就可以統計了。

統計後求最小,即解決問題

方法可能很笨,但也能實現目的

Ⅸ 52張撲克牌排序演算法

簡單:給每個花色一個值:
黑桃 39,紅桃 26,草花 13,方塊 0
然後計算每張撲克的value ,我們這樣定義value
value = 花色+點數,例如 紅桃5的value = 26+5 = 31
給每張撲克牌定義好value,在從大到小排列.現成的演算法.我就不贅述了.

Ⅹ 撲克牌速算方法

方法一:用一副撲克牌,去掉大小王和、Q、K,剩下1- -10,共40張。打亂次序,相鄰兩張加起來。如: 4張4、7、8、2,這樣讀: 4+7=11, 7+8=15,8+ 2=10,也可以直接說得數。這樣就練習了20以內的加法。40張牌等於練習了39道口算,既不覺得時間長,練起來又很方便。


方法三:還可以用100減去19張撲克牌並指,練習100以內的退位減法,最後的結果是0。練習方法也可以根據加法那樣抽一張,看剩下的數與抽的那一張對不對。

熱點內容
c語言自考 發布:2025-05-15 07:52:42 瀏覽:499
壓縮的玉 發布:2025-05-15 07:51:22 瀏覽:788
android的控制項 發布:2025-05-15 07:50:36 瀏覽:551
南崗法院伺服器ip地址 發布:2025-05-15 07:46:02 瀏覽:286
實況如何退出賬號安卓 發布:2025-05-15 07:45:56 瀏覽:917
深入編譯器 發布:2025-05-15 07:41:35 瀏覽:878
電信手機號服務密碼怎麼查 發布:2025-05-15 07:40:10 瀏覽:613
python全局變數文件 發布:2025-05-15 07:35:06 瀏覽:954
位元組和存儲位元組 發布:2025-05-15 07:32:10 瀏覽:521
linux應用開發工程師 發布:2025-05-15 07:32:07 瀏覽:261