确定一个有趣的问题,因为有许多方法,通过它你可以解决这个问题。如果你是相对较新的与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”});