扑克条形图、概率

8视图(30天)
莱纳斯
莱纳斯 2013年10月10日
编辑: 乔纳森·勒 2013年10月20日
你好。
我试图想出一个程序,显示了概率的扑克手双/ twopairs /三张相同的牌等等……我想放在手中的数量,程序将显示有多少次我将对/ twopairs /三…在条形图或柱状图。
也感谢所有的帮助。

接受的答案

乔纳森·勒
乔纳森·勒 2013年10月18日
编辑:乔纳森·勒 2013年10月20日
确定一个有趣的问题,因为有许多方法,通过它你可以解决这个问题。如果你是相对较新的与MATLAB或编码一般来说,这是一个很大的问题,你可以解决学习概率和编程!希望我提供的代码和讨论可以帮助你重新开始自己的项目!
也许最简单的方法计算复杂系统的概率(一个扑克游戏是其中一个)是使用 蒙特卡罗方法 。有效,你编写一些代码,模拟一手扑克牌,然后运行一些代码数千倍。这种方法可以计算的概率事件。
因为我不知道你感兴趣的特定格式的扑克模拟,我将离开你的细微差别。我所做的是代码了 非常 简单的蒙特卡罗扑克模拟器。在代码中,我只对进行统计,three-of-a-kinds,四张相同的牌。我也只是看看的概率直接处理这些手。换句话说,我不允许了。我们有效地交易一千手,看看经常出现某些扑克手。然后我们可以绘制条形图使用的概率 酒吧 函数。
真的,只有技巧在这段代码中使用 randperm 函数的甲板和“洗牌” histc 函数把手中。希望这有助于你开始!
%概率蒙特卡洛代的扑克手
%的简单示例没有西装,和一个五张牌没有
%画。只看对,three-of-a-kinds four-of-a-kinds。
%生成所有卡片在甲板上
oneSuit =一13;
甲板= repmat (oneSuit 1 4);
numCards =元素个数(甲板);
%蒙特卡罗模拟运行
%有效发挥大量的手来确定概率
numSimulations = 1000;
numPlayers = 4;
numCardsDealt = 5;
%对创建矩阵来存储,为每个球员等
%三行代码只数对,three-of-a-kinds,
%,four-of-a-kinds。
numPlayers handsTotal = 0(3日);
我= 1:numSimulations,
%随机卡向量,“洗牌”
shuffleIndex = randperm (numCards);
deckShuffled =甲板(shuffleIndex);
%的交易手(5 x张牌玩家)
dealCards = deckShuffled (1: numPlayers * numCardsDealt);
dealCards =重塑(dealCards numPlayers numCardsDealt);
%计算每只手的牌
cardCount = histc (dealCards oneSuit);
%计算单例,双等。消除单例和无卡数量
handCount = histc (cardCount, 0:4);
handCount = handCount (3:,:);
从这个协议整体数%添加项
handsTotal = handsTotal + handCount;
结束
%绘制结果
图;
次要情节(2,1,1)
栏(handsTotal. / numSimulations);
网格;
标题(“每个玩家手概率”);
ylabel (“概率”)
集(gca),“XTick”1:3,“XTickLabel”,{“对”,“Three-of-kind”,
“Four-of-kind”});
次要情节(2,1,2)
栏(总和(handsTotal, 2)。/ (numSimulations * numPlayers));
网格;
标题(“整体手概率”);
ylabel (“概率”)
集(gca),“XTick”1:3,“XTickLabel”,{“对”,“Three-of-kind”,
“Four-of-kind”});
此外,另一个建议。你可以查看是否有人上可用自己的代码 文件交换 !下面的提交可能峰你的兴趣:
1评论
莱纳斯
莱纳斯 2013年10月20日
谢谢你!

登录置评。

更多的答案(0)

类别

找到更多的在开始使用MATLAB帮助中心文件交换

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!