Пожалуйста, покажите мне, как повторить и список-Mathematica - PullRequest
1 голос
/ 02 апреля 2011

Как мне это зациклить?

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]

Спасибо! * * 1004

EDIT

В этой игре с монетами правила следующие:

  • Одна игра состоит из многократно подбрасывая справедливую монету, пока разница между количеством головы брошены и количество хвостов это три.
  • Вы должны платить 1 доллар каждый раз, когда монета перевернулся, и вы не можете выйти во время игра в игру.
  • Вы получаете 8 долларов в конце каждого играть в игру.

    1. Стоит ли играть в эту игру?
    2. Сколько вы можете ожидать, чтобы выиграть или проиграть после 500 пьес?

Вы можете использовать моделирование электронных таблиц и / или рассуждения о вероятностях, чтобы ответить на эти вопросы.

Класс использует Excel, я пытаюсь выучить Mathematica.

Ответы [ 5 ]

4 голосов
/ 03 апреля 2011

Немного больше о теоретической стороне

Ваша игра - случайная прогулка на R 1 .

Таким образом, ожидаемое значение количества сальто для получения расстояния 3 составляет 3 2 = 9, и это также является ожидаемым значением для ваших затрат.

Поскольку ваш заработок за игру составляет 8 долларов, вы потеряете со средней ставкой 1 доллар за игру.

Обратите внимание, что эти цифры соответствуют @Mr.Результат мастера 135108 - 120000 = 15108 для 15000 игр.

3 голосов
/ 03 апреля 2011

Если я понимаю правила игры с подбрасыванием монет и если вам необходимо использовать метод Монте-Карло, подумайте:

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 голосов
/ 03 апреля 2011

Немного больше математики. Вары не определены.

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

Кредит @ Mr.Wizard на этот ответ .

g[2]
->{{1, 1, 1, 5, 5, 1, 5, 7, 3}, {1, 3}}
2 голосов
/ 02 апреля 2011

Не уверен, что это лучший способ выполнить то, что вы хотите, но это должно помочь вам начать. Во-первых, обратите внимание, что я изменил имена 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}]

Просто введите количество раз, которое вы хотите запустить цикл ... fun [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}]

Ничего особенного!

0 голосов
/ 03 апреля 2011

Я не люблю ссориться из-за RTFM и т. Д., Но цикл довольно простой. Если я наберу «loop» в поле поиска в центре документации, то одно из первых нескольких совпадений содержит ссылку на страницу «guide / LoopingConstructs», а также ссылку на учебное пособие «tutorial / LoopsAndControlStructures». Вы читали это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...