wayne 发表于 2012-11-30 18:10:18

复式5张牌,带大小王的炸金花的概率设计

刚刚 看到老大发帖子复式诈金花的概率设计,我也来一个
一) 牌型介绍
一副扑克牌, 54张牌(带有大小王),从中选出5张牌,作为一个组合.
大小王参与组合可以视作任意你想要的牌. 总共有10种组合类型1) 5条 。    5张牌是一样的
2) 同花顺。 5张牌的点数是顺序排列的,且同花色,A可以当做最小的1,也可以当做比K大的14。
3) 4条 。    有4张牌同点数,另外一张的点数与之不同。
4) 葫芦。    有3张牌同点数,另外2张牌也是同点数
5) 同花。    5张牌同花色。      
6) 顺子。    5张牌的点数是顺序排列的,A可以当做最小的1,也可以当做比K大的14,
7) 3条。   有3张牌同点数。另外2张的点数与之不同。
8) 2对子。   有2个对子
9) 大对子.   大于对10的对子二)游戏规则
这是一个单机游戏.在一轮游戏中,系统会给玩家发两次牌.
第一次发牌之后,玩家根据组合情况,,告诉系统要保留其中任意x(0<=x<=5)张指定的牌.
系统第二次发牌时,会把玩家未指定保留的5-x牌参与洗牌过程, 然后补给5-x张牌.然后游戏结束.
三) 计分规则
每轮游戏玩家必须押上一定的积分,未出现上述10种牌型,该积分将被吃掉.
出现了,则系统将以对应的倍率反馈给玩家积分.
比如玩家押了10分,第二次开牌时,中了葫芦,则系统连同本金共返还给玩家100分.1) 5条 。    750
2) 同花顺。 (又分同花大顺(10,J,Q,K,A),同花小顺(非10,J,Q,K,A的), 对应的倍率是250,120)
3) 4条 。    60
4) 葫芦。    10
5) 同花。    7   
6) 顺子。    5
7) 3条。   3
8) 2对子。   2
9) 一对.       1 问题是, 如果系统两次开牌的洗牌算法是完全随机的,玩家赢分的期望值是多少
更进一步,系统如何设计洗牌程序,使得系统能够赢利,但又能留住玩家,即不让玩家太扫兴呢?

来一个图文并茂:
初始状态,系统等待玩家按开牌键:

玩家按了开牌键,系统进行了第一次洗牌,玩家保留了2个9:

玩家再按开牌键,系统进行了第二次洗牌,玩家中奖了:

boy_buaa 发表于 2012-11-30 19:43:47

不会炸金花呀

clockman 发表于 2012-12-1 20:17:39

做新手任务,凑字数

wayne 发表于 2012-12-2 10:11:17

我补充的了游戏过程的图片.
有兴趣的可以看看

KeyTo9_Fans 发表于 2012-12-3 20:49:22

以下附件是根据楼主的描述,用MFC编出来的炸金花游戏:



下载并解压后就可以玩了。

祝大家玩得开心!

wayne 发表于 2012-12-3 21:43:59

:b: 5# KeyTo9_Fans
:b:
厉害,竟然这么短的时间内写成游戏了
======
其实第一次开牌,如果中奖了,系统可以帮玩家自动留牌的
过段时间我也提供我的程序,Qt写的. 比较完整,界面 如主题贴所示.

BTW: 可否贴出洗牌的代码.

hujunhua 发表于 2012-12-6 09:01:34

这个游戏程序没有什么难度(哎哟,我的腰!),但是复式诈金花的游戏程序就有点难度了。因为机器管的三家牌要由程序决策分组。

KeyTo9_Fans 发表于 2012-12-11 10:37:43

自动玩牌程序新鲜出炉!

下载并运行以下附件就可以观看最佳策略下的玩牌结果了:



说明:
1. 将settings.txt和可执行程序放在同一目录下;
2. settings.txt的第1行到第11行是用来设置每种牌型的奖励分值的;
3. settings.txt的第12行是用来设置每次自动玩牌的次数的;
4. settings.txt的第13行到第23行是用来记录每种牌型的中奖次数的;
5. 运行exe程序后,需等待$10$秒钟的预处理时间(读取settings.txt并求解最佳策略)才会显示游戏界面;
6. 点击"Deal"为手动玩牌,点击"xxx Deals Automatically"为自动玩牌;
7. 手动玩牌时,如果"Hold"的背景色变成了浅绿色,则说明您的留牌方案是最佳方案。

祝大家玩得开心!

#####

用上述程序(以最佳策略)自动玩牌$10000000$局,得钱$20608846$元。

说明当洗牌完全随机时,平均每局赢$(2.061\pm0.005)$元。

玩牌后查看settings.txt,可以看到每种类型的中奖次数如下:

5 of a Kind:      4003
Royal Flush:    3109
Str Flush:         14932
4 of a Kind:       189032
Full House:       158439
Flush:               135249
Straight:         256486
3 of a Kind:       1857860
2 Pair:                977127
Pair Above 10: 2354189
None of Above: 4049574

wayne 发表于 2012-12-11 20:44:25

我写的程序本身200KB左右,但加上Qt的几个dll, 还有一堆的图片和声音文件,就有10M了,远远超过论坛的限制.
还是作罢了.

wayne 发表于 2012-12-11 20:56:52

8# KeyTo9_Fans
不太明白fans的最佳策略是什么.
我自己理论上算了一下.
如果 第一次开牌中奖了,玩家保留了最少的核心牌(组成该奖的最少牌)给第二次开牌. 那么,玩家的赢分期望值是1.49224
页: [1] 2
查看完整版本: 复式5张牌,带大小王的炸金花的概率设计