请告诉我如何重复和列出-Mathematica

时间:2011-04-02 16:54:22

标签: wolfram-mathematica

如何循环播放?

p = Table[RandomChoice[{Heads, Tails}, 2 i + 1], {i, 10}];
v = Count[#, Heads] & /@ p;
c = Count[#, Tails] & /@ p;
f = Abs[v - c];
g = Take[f, LengthWhile[f, # != 3 &] + 1]

谢谢!

修改

在这个硬币翻转游戏中,规则如下:

  • 单人游戏包含多次 翻一个公平的硬币直到 数量之差 头被扔了,尾巴的数量 是三。
  • 每次硬币必须支付1美元 翻转,你可能不会放弃 游戏的玩法。
  • 每个人收到8美元 玩游戏。

    1. 你应该玩这个游戏吗?
    2. 你期望赢得多少钱? 500场比赛后输球?

您可以使用电子表格模拟和/或推理概率来回答这些问题。

该课程正在使用Excel,我正在尝试学习Mathematica。

5 个答案:

答案 0 :(得分:4)

在理论方面稍微多一点

您的游戏在 R 1 上是random walk

因此,获得距离3的翻转数的期望值是3 2 = 9,这也是您的成本的预期值。

由于你每场比赛的收入是8美元,你将以平均每场1美元的价格输掉。

请注意,这些数字与@Mr一致。向导的结果135108 - 120000 = 15108为15000场比赛。

答案 1 :(得分:3)

如果我理解硬币翻转游戏的规则,并且你必须使用蒙特卡罗方法,请考虑以下事项:

count = 
  Table[
    i = x = 0;
    While[Abs[x] < 3, x += RandomChoice[{1, -1}]; i++];
    i,
    {15000}
  ];

想法是掷硬币,直到一个人赢了三个,然后输出到达那里所需的转数。这样做15,000次,并创建结果列表(count)。

你花了15,000场比赛所花的钱只是轮数,或者:

Total @ count

(* Out=  135108 *)

虽然你的奖金是$ 8 * 15,000 = $ 120,000,所以这不是一个好玩的游戏。

如果你需要计算每个回合次数的次数,那么:

Sort @ Tally @ count

答案 2 :(得分:2)

不确定这是否是实现您想要的最佳方式,但这应该让您开始。首先,请注意我将Heads和Tails的名称更改为小写(Heads是一个内置符号......)---小写变量名称是避免此类问题的最佳方法。

Remove[p, v, c, fun, f, g, head, tail];
fun[n_] :=
 Do[
  Block[
   {p, v, c, f, g},
   p = Table[RandomChoice[{head, tail}, 2 i + 1], {i, 10}];
   v = Count[#, head] & /@ p;
   c = Count[#, tail] & /@ p;
   f = Abs[v - c];
   g = Print[Take[f, LengthWhile[f, # != 3 &] + 1]]
   ],
  {n}]

只需输入您想要运行循环的次数...有趣[5]给出:

{1,1,1,1,5,3}

{3}

{1,1,5,1,5,1,3}

{3}

{1,5,3}

注意:因为你可能想要对输出做些什么,使用Table []可能比Do []更好。这将返回一个列表列表。

Remove[p, v, c, fun, f, g, head, tail];
fun[n_] :=
 Table[
  Block[
   {p, v, c, f, g},
   p = Table[RandomChoice[{head, tail}, 2 i + 1], {i, 10}];
   v = Count[#, head] & /@ p;
   c = Count[#, tail] & /@ p;
   f = Abs[v - c];
   g = Take[f, LengthWhile[f, # != 3 &] + 1]
   ],
  {n}]

没什么好看的!

答案 3 :(得分:2)

更多Mathematica-ish。没有定义任何变量。

g[n_] := Table[(Abs /@ Total /@ 
             Array[RandomChoice[{-1, 1}, (2 # + 1)] &, 10]) /.
                                        {x___, 3, ___} :> {x, 3}, 
          {n}]  

感谢@ Mr.Wizard this answer

g[2]
->{{1, 1, 1, 5, 5, 1, 5, 7, 3}, {1, 3}}

答案 4 :(得分:0)

我不喜欢讨厌RTFM等,但循环非常基本的。如果我在文档中心的搜索框中键入“loop”,则前几个命中之一包含指向“guide / LoopingConstructs”页面的链接,其中包含指向教程“tutorial / LoopsAndControlStructures”的链接。你读过这些吗?