【问题标题】:What is the wrong in my code in mathematica我在数学中的代码有什么问题
【发布时间】:2019-10-08 23:14:11
【问题描述】:

假设您玩扑克游戏的变体,其中有五张牌,使用的是一副普通牌的子集。考虑的子集是一副牌中价值 7、8、9、10、J、Q、K、A 的牌,总共 32 张牌。允许 A-7-8-9-10 作为低顺子或同花顺。 使用普查法计算以下手牌的准确概率。

  • 一对
  • 两对
  • 三样
  • 满座
  • 刷新
  • 四样
  • 同花顺
  • 什么都没有

比较并讨论上述变体扑克游戏的概率与标准 52 张牌的普通扑克游戏的概率。 注意:如果给定手牌包含不同价值的手牌,则只考虑一个(最高等级)

我的解决方案是:

Any hand

In[172]:= 

In[263]:= deck = Range[7, 13]

Out[263]= {7, 8, 9, 10, 11, 12, 13}

Subsets[{7, 8, 9, 10, A, J, Q, K}, {5}]


Out[41]= {{7, 8, 9, 10, A}, {7, 8, 9, 10, J}, {7, 8, 9, 10, Q}, {7, 8, 9, 10, K}, {7, 
  8, 9, A, J}, {7, 8, 9, A, Q}, {7, 8, 9, A, K}, {7, 8, 9, J, Q}, {7, 8, 9, J,
   K}, {7, 8, 9, Q, K}, {7, 8, 10, A, J}, {7, 8, 10, A, Q}, {7, 8, 10, A, 
  K}, {7, 8, 10, J, Q}, {7, 8, 10, J, K}, {7, 8, 10, Q, K}, {7, 8, A, J, 
  Q}, {7, 8, A, J, K}, {7, 8, A, Q, K}, {7, 8, J, Q, K}, {7, 9, 10, A, J}, {7,
   9, 10, A, Q}, {7, 9, 10, A, K}, {7, 9, 10, J, Q}, {7, 9, 10, J, K}, {7, 9, 
  10, Q, K}, {7, 9, A, J, Q}, {7, 9, A, J, K}, {7, 9, A, Q, K}, {7, 9, J, Q, 
  K}, {7, 10, A, J, Q}, {7, 10, A, J, K}, {7, 10, A, Q, K}, {7, 10, J, Q, 
  K}, {7, A, J, Q, K}, {8, 9, 10, A, J}, {8, 9, 10, A, Q}, {8, 9, 10, A, 
  K}, {8, 9, 10, J, Q}, {8, 9, 10, J, K}, {8, 9, 10, Q, K}, {8, 9, A, J, 
  Q}, {8, 9, A, J, K}, {8, 9, A, Q, K}, {8, 9, J, Q, K}, {8, 10, A, J, Q}, {8,
   10, A, J, K}, {8, 10, A, Q, K}, {8, 10, J, Q, K}, {8, A, J, Q, K}, {9, 10, 
  A, J, Q}, {9, 10, A, J, K}, {9, 10, A, Q, K}, {9, 10, J, Q, K}, {9, A, J, Q,
   K}, {10, A, J, Q, K}}

Length[Subsets[{7, 8, 9, 10, A, J, Q, K}, {5}]]



In[259]:= Subsets[{A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K}, {5}]


In[260]:= Length[Subsets[{A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K}, {5}]]

Out[260]= 1287

One pair:

32kort:

In[135]:= deck = Sort[Join[Range[7, 14], Range[7, 14], Range[7, 14], Range[7, 14]]];
hands = Subsets[deck, {5}];
onePairQ32[{___, x_, x_, ___}] := True;
onePairQ32[{___, x_, x_, x_, ___}] := False;
onePairQ32[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
onePairQ32[{___}] := False;
Count[hands, _?onePairQ32]

Out[141]= 107520

52kort:



In[128]:= 
deck = Sort[Join[Range[1, 13], Range[1, 13], Range[1, 13], Range[1, 13]]];
hands = Subsets[deck, {5}];
onePairQ52[{___, x_, x_, ___}] := True;
onePairQ52[{___, x_, x_, x_, ___}] := False;
onePairQ52[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
onePairQ52[{___}] := False;
Count[hands, _?onePairQ52]

Out[134]= 1098240



Two pairs:

32kort:

In[8]:= deck = Sort[Join[Range[7, 14], Range[7, 14], Range[7, 14], Range[7, 14]]];
hands = Subsets[deck, {5}];
TwoPairQ32[{___, x_, x_, ___}] := False;
TwoPairQ32[{___, x_, x_, x_, ___}] := False;
TwoPairQ32[{___, x_, x_, ___, y_, y_, ___} /; x != y] := True;
TwoPairQ32[{___}] := False;
Count[hands, _?TwoPairQ32]

Out[14]= 24192




52kort:

In[15]:= deck = Sort[Join[Range[1, 13], Range[1, 13], Range[1, 13], Range[1, 13]]];
hands = Subsets[deck, {5}];
TwoPairQ52[{___, x_, x_, ___}] := False;
TwoPairQ52[{___, x_, x_, x_, ___}] := False;
TwoPairQ52[{___, x_, x_, ___, y_, y_, ___} /; x != y] := True;
TwoPairQ52[{___}] := False;
Count[hands, _?TwoPairQ52]

Out[21]= 123552



Three of a kind:

32kort:

In[22]:= deck = Sort[Join[Range[7, 14], Range[7, 14], Range[7, 14], Range[7, 14]]];
hands = Subsets[deck, {5}];
ThreeOfKindQ32[{___, x_, x_, ___}] := False;
ThreeOfKindQ32[{___, x_, x_, x_, ___}] := True;
ThreeOfKindQ32[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
ThreeOfKindQ32[{___}] := False;
Count[hands, _?ThreeOfKindQ32]

Out[28]= 12320

52kort:



In[142]:= deck = Sort[Join[Range[1, 13], Range[1, 13], Range[1, 13], Range[1, 13]]];
hands = Subsets[deck, {5}];
ThreeOfKindQ52[{___, x_, x_, ___}] := False;
ThreeOfKindQ52[{___, x_, x_, x_, ___}] := True;
ThreeOfKindQ52[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
ThreeOfKindQ52[{___}] := False;
Count[hands, _?ThreeOfKindQ52]

Out[148]= 59280

pairQ[{x_, x_, y_, y_} /; x != y] := False; (* two pairs *)
pairQ[{___, x_, x_, x_, ___}] := False; (* three of a kind *)
pairQ[{___, x_, x_, ___}] := True; (* a pair *)
pairQ[{___}] := False (* else *)



Four of a kind:

32kort:



In[36]:= deck = Sort[Join[Range[7, 14], Range[7, 14], Range[7, 14], Range[7, 14]]];
hands = Subsets[deck, {5}];
FourOfKindQ32[{___, x_, x_, ___}] := False;
FourOfKindQ32[{___, x_, x_, x_, ___}] := False;
FourOfKindQ32[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
FourOfKindQ32[{___}] := False;
FourOfKindQ32[{___, x_, x_, x_, x_, ___}] := True;
Count[hands, _?FourOfKindQ32]

Out[43]= 224

52kort:

In[44]:= deck = Sort[Join[Range[1, 13], Range[1, 13], Range[1, 13], Range[1, 13]]];
hands = Subsets[deck, {5}];
FourOfKindQ52[{___, x_, x_, ___}] := False;
FourOfKindQ52[{___, x_, x_, x_, ___}] := False;
FourOfKindQ52[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
FourOfKindQ52[{___}] := False;
FourOfKindQ52[{___, x_, x_, x_, x_, ___}] := True;
Count[hands, _?FourOfKindQ52]

Out[51]= 624



Full house:

32kort:

In[98]:= deck = Sort[Join[Range[7, 14], Range[7, 14], Range[7, 14], Range[7, 14]]];
hands = Subsets[deck, {5}];
FullhouseQ32[{___, x_, x_, ___}] := False;
FullhouseQ32[{___, x_, x_, x_, ___}] := False;
FullhouseQ32[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
FullhouseQ32[{___}] := False;
FullhouseQ32[{x_, x_, x_, y_, y_} /; x != y] := True;
Count[hands, _?FullhouseQ32]


Out[105]= 672

52kort:

In[157]:= deck = Sort[Join[Range[1, 13], Range[1, 13], Range[1, 13], Range[1, 13]]];
hands = Subsets[deck, {5}];
FullhouseQ52[{___, x_, x_, ___}] := False;
FullhouseQ52[{___, x_, x_, x_, ___}] := False;
FullhouseQ52[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
FullhouseQ52[{___}] := False;
FullhouseQ52[{x_, x_, y_, y_, y_} /; x != y] := True;
Count[hands, _?FullhouseQ52]




Out[164]= 1872



Nothing:

32kort:



In[75]:= deck = Sort[Join[Range[7, 14], Range[7, 14], Range[7, 14], Range[7, 14]]];
hands = Subsets[deck, {5}];
NothingQ32[{___, x_, x_, ___}] := False;
NothingQ32[{___, x_, x_, x_, ___}] := False;
NothingQ32[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
NothingQ32[{___}] := True;
Count[hands, _?NothingQ32]

Out[81]= 57344

52kort:

In[165]:= deck = Sort[Join[Range[1, 13], Range[1, 13], Range[1, 13], Range[1, 13]]];
hands = Subsets[deck, {5}];
NothingQ52[{___, x_, x_, ___}] := False;
NothingQ52[{___, x_, x_, x_, ___}] := False;
NothingQ52[{___, x_, x_, ___, y_, y_, ___} /; x != y] := False;
NothingQ52[{___}] := True;
Count[hands, _?NothingQ52]

Out[171]= 1317888

我得到了错误的值,但我不知道我的问题是什么

【问题讨论】:

    标签: wolfram-mathematica


    【解决方案1】:

    您的 3-of-a-kind 手包括 4-of-a-kind 手。

    例子:

    Take[Union[Cases[hands,_?ThreeOfKindQ32]],20]
    

    显示

    {{7, 7, 7, 7, 8}, {7, 7, 7, 7, 9}, {7, 7, 7, 7, 10}, {7, 7, 7, 7, 11}, 
     {7, 7, 7, 7, 12}, {7, 7, 7, 7, 13}, {7, 7, 7, 7, 14}, {7, 7, 7, 8, 8}, 
     {7, 7, 7, 8, 9}, {7, 7, 7, 8, 10}, {7, 7, 7, 8, 11}, {7, 7, 7, 8, 12}, 
     {7, 7, 7, 8, 13}, {7, 7, 7, 8, 14}, {7, 7, 7, 9, 9}, {7, 7, 7, 9, 10}, 
     {7, 7, 7, 9, 11}, {7, 7, 7, 9, 12}, {7, 7, 7, 9, 13}, {7, 7, 7, 9, 14}}
    

    接下来,要么我做错了,要么你的满屋模式有问题。当我为此抓取并粘贴您的代码时,它给我的计数为零。我还没弄清楚这是怎么回事。你可以开始一个新的笔记本,只粘贴你发布的代码,然后评估它,看看你是否也得到零?

    当我将该代码更改为

    FullhouseQ32[{___}] := False;
    FullhouseQ32[{x_, x_, x_, y_, y_} /; x != y] := True;
    FullhouseQ32[{x_, x_, y_, y_, y_} /; x != y] := True;
    

    我得到了似乎正确的结果,但我不能确定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-28
      • 1970-01-01
      • 2018-09-20
      相关资源
      最近更新 更多