Решение вопроса статистики с использованием Python - PullRequest
1 голос
/ 08 ноября 2010

Я действительно потерян.Как я могу подойти к этой проблеме?

Начиная с $ 1 капитала, вы выбираете фиксированную пропорцию p вашего капитала, чтобы делать ставки на справедливую монету, которую подбрасывают многократно по 1000 раз.Ваше возвращение удваивается, если жребий приземляется головой, а вы теряете его, он приземляется хвостом.Например, если р = 0,25, а для первой ставки ваша ставка равна 0,25 доллара, а если появляются головы, вы выигрываете 0,5 доллара, и поэтому у вас есть 1,50 доллара.Вы продолжаете ставить $ 0,375 со второй попытки, и если второй бросок выпадает из хвоста, у вас остается $ 1,125.

Предположим, что p выбрано, чтобы максимизировать шансы получить хотя бы миллиард долларов после 1000 бросков,вероятность того, что вы станете миллиардером?

Как вы можете использовать Python для кодирования этого сценария и получения ответа?

Ответы [ 3 ]

1 голос
/ 08 ноября 2010

Вот несколько советов. Порядок выигрышей и проигрышей не влияет на общую сумму денег в итоге, потому что умножения коммутируют. Следовательно, общая сумма денег после всех бросков (когда начинается с $ 1) равна 1 * (1+2*p)^(W) * (1-p)^(1000-W), где W - это общее количество выигрышей из 1000 бросков (и, следовательно, 1000 - W - это количество потерь). Это позволит вам определить, получите ли вы за данное количество выигрышей W более миллиарда долларов. Однако существует гораздо больше способов выиграть 500 / проиграть 500, чем выиграть 1000 / проиграть 0. Вы можете найти количество способов получить W из 1000 бросков, используя биномиальный коэффициент .

Если вы правильно примените эти идеи, то сможете найти p, которое максимизирует вероятность. Тем не менее, вы должны заметить, что на самом деле существует диапазон р, которые дают равные шансы на превышение миллиарда долларов. Они не все приносят одинаковую сумму денег.

1 голос
/ 08 ноября 2010

Есть ли у вас опыт работы с питоном?Если нет, прочитайте учебник .

. Чтобы решить вашу проблему, вы должны сначала записать какой-нибудь псевдокод.Ваша первая попытка может быть очень общей, а затем вам следует более подробно рассказать о конкретных операциях, пока, в конце концов, вы действительно не приступите к ее реализации.Подумайте о таких деталях, как, какие предварительные условия у вас есть и какие дополнительные условия вам нужны?

0 голосов
/ 08 ноября 2010

Очевидное место для начала - написать код, который будет имитировать выполнение бросков 1000 монет и даст вам значение для capital в конце.Это в основном тривиально:

def _mc(p):
    capital = 1.0
    for _ in xrange(1000):
        if random.random() < 0.5:
            capital *= 1 + p
        else:
            capital *= 1 - p
    return capital

Обратите внимание, что capital, вероятно, окажется крошечным.Это нормально.

Теперь это, очевидно, сильно зависит от того, что такое случайные сальто, что плохо.Таким образом, вы должны определить его ожидаемое значение, выполнив множество цепочек по 1000 монет и выполнив некоторую статистику того, что, по вашему мнению, должно быть.

Наконец, вы хотите сделать все это длядиапазон значений p, вероятно, между 0 и 0.2.Вы можете использовать matplotlib для построения графика p относительно ожидаемого результата, чтобы получить представление о том, какой p должен быть лучшим.

Обратите внимание, что Python, вероятно, не лучший язык для такого рода вещей.;C будет намного быстрее, и вам все равно не понадобится гибкость Python.

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