打扑克的时候收牌发牌收入证明可以作假吗

扑克牌洗牌发牌过程模拟_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
扑克牌洗牌发牌过程模拟
上传于||暂无简介
阅读已结束,如果下载本文需要使用2下载券
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩22页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢德州扑克中,一个人知道接下来要发的牌,一个人知道对手拿的牌,他们两个对决,谁会赢?
Good question!假设A知道要发的牌,B知道A手中的牌。假设他们都可以采取对自己最有利的策略。假设A与B互相知道对方的能力:结论1:河牌一旦亮出,A就不可能再赚到钱。证明:因为B此时知道了所有信息,而A不知道B的牌力。事实上,到了河牌圈,A几乎就是要输了,此时B即使诈唬,由于忌惮B的能力,A也很难跟注摊牌,更别说B价值下注了。结论2:A任何时候都不会过牌。证明:过牌相当于白白浪费了自己的能力,牌亮得越多B的胜算越大,因此过牌对A是负期望。结论3:若A的牌力在某一轮达到最大,则A最多会加注跟注到其前一轮然后全押。证明:与上同理,一旦A的牌力停止提高且暴露在B面前,主动权就完全掌握在B手中了。因为A一定不能让B看到那张提高自己牌力的牌,唯一的方法就是在前一轮全押。由于B也知道这一点,因此只要A全押,就代表A的牌力还会提升,或者是A在诈唬。而B的决定则跟牌面的信息有关。比如,A手中是一个对子,翻牌后没有形成同花和顺子的可能,牌力提升只可能是再来一个同样的数字,而B若此时是同花就可以果断全押跟进,若B只是一对更大的对子则应该弃牌,虽然此时B的对子大,除非他认为A在诈唬。再比如A手中是KhQh,翻牌是QsJhTc,B手拿AsKc,目前是B顺子最大,但A提升的可能有很多种,B害怕A形成同花甚至四条,A知道会来一个9h和一个5s形成一个顺子,但不知道B有多大,此时A和B谁也没有把握一定能赢。结论4:A和B短期都没有必胜的策略。因此,A要选取即使手牌被压制也能获胜的牌来玩,比如将达到两对或以上牌力的牌,而且越早全押越好,因为那些会形成暗三、顺子或同花之类的牌一旦翻牌出来就会给B很多线索,让B有了最大化利润的机会。然而若A只玩会达到两对以上牌力的牌,则长期会输钱,因为这种牌的数量显然远远不足一半,B只要在A加注时就弃牌,就足以应对了,因为A几乎总是自己直接弃牌。结论5:A翻牌前要么全押要么弃牌,长期来看是一种好的策略。A必须要打得更松一些,但这样就给了B更多压制自己的机会。因为B要跟A玩下去,一定是至少当前B的牌比A大。然而B拿到压制A牌的机会实际并不是很多,而且就算有,B也很难赢。更多的情况是A拿27也敢全押,而B即使知道对方是27,拿AK也不一定敢跟,谁知道会翻出什么来,跟了也不一定赢。这其中最重要的一点是:A掌握了九张牌中七张的信息,而B只掌握了四张的信息。结论5:长期来看,A是赢家。假设A与B互相不知道对方的能力:其实道理是一样的,A会打得更松一些,比如有一个对子就上,B弃牌会少一些,比如数字比A大就上。这样来看还是A的赢面大一些。因为B翻面后有对子的概率是远远低于A的(A接近100%,不然他就不会玩这手牌,B则不到50%),自然若B有对子,则有较大几率比A大,毕竟B起手牌比A大,然而长期来看还是A赚得多。
假设两个人都知道对方的能力。在筹码不是只有一个盲注的情况下对决。知道将要发什么牌的玩家正确的打法肯定是preflop全进或者弃牌,不给对手任何看牌的机会。发成高牌的比例为1/2,那知道将要发什么牌的玩家想要取得50%以上的胜率,他会选择在1对以上牌力的情况下进行全压,甚至会掺杂少量的bluff。那么问题来了,知道对手手牌的玩家应该能猜出知道将要发什么牌的玩家的策略,他在手牌具有压倒优势的时候选择跟住,比如AAVSA2,88VS67那么他获胜的概率就会提高。
知道接下来发什么牌的赢。
通常是知道接下来要发的牌的玩家赢。前提假设两个人不是新手。甲是知道发什么牌的玩家,乙是知道对手牌的人。极端假设,甲手持AJ,乙手持AK,甲被完全压制。乙的信息是知道自己压制对手,但是甲知道的是实际上能不能赢,且甲知道乙知道自己能不能赢。无论是诈唬还是知道自己会赢,甲都相对处在主动位置上。
在深筹码的情况下,我觉得A(预知)会得到更大的优势。原因在于A完全能以75%以上的底牌翻牌前全下,而B根本无法做出准确的判断。假设B获得AA的底牌,对A的23s翻牌前全下,他面对的是:1 A可能预见到翻牌后可以获得顺子、同花或者近乎于nuts的组合 2 A用空气牌bluff。B没有任何依据来判断,只能靠运气。A的成本非常低,只需要在翻牌前fold或全下就可以了,B根本不会获得turn或river上获取主动的机会。
我不知道结果是什么。我只知道胜负结果和一个因素密切相关,那就是筹码深度。脱离了这个的分析,在数学上都是不精确的。
知道所有5张么?那胜算大点
好问题。而且这种玩法可行,感觉会很有趣。首先自己加个前提,A和B都知道对方的技能,这样才好玩。个人倾向于A,因为A的信息是预见性的。A可以bluff,比如知道翻牌圈听同花或者听顺子,就先进翻牌圈,然后直接全下,虽然也许下一张翻牌不中,但B是很难有胆量跟的——特别是B已经知道A听了,而且A有看牌能力的情况下。(利用B的能力bluff)第二,就算是B拿着好牌,A拿着差牌,A全下,B跟,几乎一定是bad-beat,比如A击中顶对。重点在于B害怕A已经知道bad-beat,但B什么都做不了。A必须在前几轮下完所有筹码,否则面对B在turn/river round的全下完全没法跟。好在A主动,所以A赢。感觉是这样:A可以all in一半以上的牌,B赢的机会是在手牌压制的情况下跟(AA/AK抓KQ翻牌K的全下),或者抓bluff(抓到的几率一定小于50%)求探讨。
假设A为知道接下来发的牌的人 B为知道别人手牌的人Flop之前 A有5张牌的信息 B有4张牌的信息 A这5张牌的信息只是对自己牌力的一个增强性评估
B知道的是双方的牌力对比Turn之前 A有6张牌的信息 但是这时B已经跃升到了7张牌的信息A可能出现的牌型和双方胜率的对比已经出现在B的脑海中River之前 A有7张所有关于自己手牌的信息 B有8张牌的信息B的优势还是可以直接对比双方胜率这里其实还应该有一个假设,1.假设双方都知道对方的技能2.假设双方都不知道对方的技能这是对整个游戏起到至关重要的假设。具体情况比较复杂 等有空了再分析。。。
当然是读牌的人赢面大
已有帐号?
无法登录?
社交帐号登录有没有扑克牌在发牌时可以偷看的手法和技巧?_百度知道java(21)
今天看到这个算法题, ,忍不住自己用Java做了一个。
初始化很重要,所有的52张牌按顺序放入到容器里边,标志位标记为false表示手里没这牌。
利用随机数,找到容器中的这张牌,将标志位标记为true,表示手里有了这张牌。
因为放入的时候是按顺序的,于是每个花色各自,自然也是按照顺序,找出标志位为true的,输出即可。
3找出最大连续牌
思路是将连续的字符分隔出来,连续数目最大的,即为最大连续牌。每个花色的的最大牌找出来,再找出最大的。
每个花色里,生成一个字符串,其中,手里有的排,将索引加入字符串,再加分隔符。手里没有的,用分号加入字符串。
用分号分隔后,长度大于1的即为有连续牌的。从有连续牌的,找出最大的即可。
* 程序描述:
  一副纸牌有52张,4种花色,每种花色13张。我们能用一个整数m就表示出所有的52种情况,规则是:
  m / 13: =0: 红心,=1: 方块,=2: 梅花,=3: 黑桃
  m % 13:
=0:2,=1:3,=2:4 ....
=8:10,=9:J,=10:Q,=11: K,=12:A
  比如:m = 15 就表示:方块4
m=38表示:梅花A
  我们希望用程序模拟1副扑克牌随机抽取13张,发给某人的过程。
  发牌后需要排序:规则是:先按花色,再按点数。花色的大小顺序是:梅花、方块、红心、黑桃。点数的顺序是:2、3、4、…. 10、J、Q、K、A。
  然后,挑选出最大的连续牌型。规则是:连续张数多的大。张数相等的则花色大的大(此时与点数无关)。
我加了一条规则 最小连续是3张
import java.util.HashM
import java.util.M
import java.util.R
import java.util.V
* @author new
public class Poker {
private static final int CARDSNUM=13;
private static final int MAX_NUM=52;
private static final int MIN_CONSEC_NUM = 2;
private Map&CardColor,Vector&Cards&& allCards=new HashMap&CardColor,Vector&Cards&&();
public void start(){
genarate();
printMax();
private void init(){
allCards.clear();
for(CardColor color:CardColor.values()){
Vector&Cards& v=new Vector&Cards&();
for(CardDisplay cd:CardDisplay.values()){
c = new Cards();
c.setCardColor(color);
c.setCardDisplay(cd);
c.setExist(false);
c.setRealNum(CARDSNUM*color.colorType+cd.num);
allCards.put(color, v);
* 随机抽取13张牌
private void genarate(){
System.out.println(&my cards is :&);
Random r = new Random();
int tmp = r.nextInt(MAX_NUM);
int answer = tmp / CARDSNUM ;
for(Cards obj:allCards.get(getColor(answer))){
if(obj.getRealNum()==tmp&&obj.isExist()==false){
i++;
obj.setExist(true);
System.out.println(obj.getCardColor().colorDesc+&:&+obj.getCardDisplay().displayStr);
}while(i&CARDSNUM);
private CardColor getColor(int answer){
for(CardColor cc:CardColor.values()){
if(cc.colorType == answer){
return null;
* 开始排序 其实不用排序 枚举初始化的时候已经排好序
private void order(){
System.out.println();
System.out.println(&ofter order :&);
for(CardColor key:allCards.keySet()){
System.out.print(key.colorDesc +& : &);
for(Cards obj:allCards.get(key)){
if(obj.isExist()){
System.out.print(obj.getCardDisplay().displayStr+& &);
System.out.println();
* 取出最大的连续牌型
private void printMax(){
CardColor maxColor=null;
int maxCardIdx = -1;
int maxCardLength =0;
for(CardColor key:allCards.keySet()){
Vector&Cards& v = allCards.get(key);
StringBuffer tmpcards=new StringBuffer();
for(int idx=0;idx&v.size();idx++){
Cards obj = v.get(idx);
if(obj.isExist()){
tmpcards.append(idx).append(&-&);
tmpcards.append(&;&);
String cardstr=
tmpcards.toString().replaceAll(&-;&, &;&);
if(cardstr.endsWith(&-&))cardstr=cardstr.substring(0,cardstr.length()-2);
String[] tmpcardsarr=cardstr.split(&;&);
int temp_maxCardIdx =-1;
int tmp_maxCardLength =0;
for(int i=0;i&tmpcardsarr.i++){
String[] arr = tmpcardsarr[i].split(&-&);
if(tmp_maxCardLength&=arr.length&&arr.length&=MIN_CONSEC_NUM){
temp_maxCardIdx=Integer.parseInt(arr[0]);
tmp_maxCardLength=arr.
if(tmp_maxCardLength&=MIN_CONSEC_NUM){
if(tmp_maxCardLength&maxCardLength||(maxColor!=null && tmp_maxCardLength==maxCardLength&&key.colorIndex&maxColor.colorIndex)){
maxColor =
maxCardIdx = temp_maxCardI
maxCardLength = tmp_maxCardL
System.out.println();
System.out.println(&max :&);
if(maxCardLength&=MIN_CONSEC_NUM){
System.out.print(maxColor.colorDesc+&:&);
Vector&Cards& v = allCards.get(maxColor);
for(int i=maxCardIi&v.size();i++){
Cards obj = v.get(i);
if(obj.isExist()){
System.out.print(obj.getCardDisplay().displayStr+& &);
System.out.println(&无连续牌&);
* @param args
public static void main(String[] args) {
Poker p = new Poker();
p.start();
class CardMax
CardColor maxC
int maxCardI
* @author new
enum CardColor
CLUB(2,&梅花&,1),//梅花
DIAMOND(1,&方块&,2),//方块
HEART(0,&红桃&,3),//红桃
SPADE(3,&黑桃&,4);//黑桃
protected final int colorT
protected final String colorD
protected final int colorI//代表花色大小 值越大越大
private CardColor(int type,String desc,int oidx)
this.colorType =
this.colorDesc =
this.colorIndex =
enum CardDisplay
CARD_2(0),
CARD_3(1),
CARD_4(2),
CARD_5(3),
CARD_6(4),
CARD_7(5),
CARD_8(6),
CARD_9(7),
CARD_10(8),
CARD_J(9),
CARD_Q(10),
CARD_K(11),
CARD_A(12);
protected final String displayS
protected final int
private CardDisplay(int num)
this.num =
if(num&9){
this.displayStr = String.valueOf(num+2);
String str=&&;
switch(num){
str = &J&;
str = &Q&;
str = &K&;
this.displayStr =
* 每张牌对象
* @author new
class Cards
Cards(CardColor cardColor,CardDisplay cardDisplay,int realNum,boolean exist){
this.cardColor = cardC
this.cardDisplay = cardD
this.realNum = realN
this.exist =
private CardColor cardC//花色
private CardDisplay cardD
private int
private boolean
public CardColor getCardColor() {
return cardC
public CardDisplay getCardDisplay() {
return cardD
public int getRealNum() {
return realN
public boolean isExist() {
public void setCardColor(CardColor cardColor) {
this.cardColor = cardC
public void setCardDisplay(CardDisplay cardDisplay) {
this.cardDisplay = cardD
public void setRealNum(int realNum) {
this.realNum = realN
public void setExist(boolean exist) {
this.exist =
测试结果:
my cards is :
ofter order :
方块 : 3 4 6 8 9 A
黑桃 : 5 10 Q
梅花 : 4 5 9
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:111151次
积分:1618
积分:1618
排名:第18320名
转载:304篇
(1)(1)(2)(1)(12)(6)(4)(3)(3)(2)(1)(5)(9)(21)(18)(58)(115)(11)(18)(20)扑克牌魔术 你发牌,别人叫停的时候那张牌你能猜到_百度知道

我要回帖

更多关于 打扑克怎么记牌 的文章

 

随机推荐