Помощь с уравнением вероятности - PullRequest
2 голосов
/ 01 августа 2009

Я пытаюсь собрать приложение для развлечения, в котором есть сценарий, в котором мне нужно вычислить уравнение вероятности для следующего сценария:

Предположим, у меня есть несколько попыток чего-то, и каждая попытка имеет успех (известен заранее). Каковы шансы после всех этих попыток успеха?

Например, есть три попытки (все будут предприняты индивидуально).

Первый, как известно, имеет 60% успеха. Второй, как известно, имеет 30% успеха. Третий, как известно, имеет 75% успеха. Каковы шансы на успех, если все три попытки сделаны?

Я пробовал несколько формул и не могу точно определить правильную.

Спасибо за помощь!

Ответы [ 3 ]

9 голосов
/ 01 августа 2009

Вероятность выигрыша есть вероятность не проиграть все три: 1 - (1 - 0,6) (1 - 0,3) (1 - 0,75)

5 голосов
/ 01 августа 2009

1 - .4 * .7 * .25

То есть найдите вероятность того, что все попытки потерпят неудачу, и инвертируйте ее. Таким образом, в общем случае, учитывая конечную последовательность событий с вероятностями P [i], вероятность того, что хотя бы одно событие будет успешным, составляет 1 - (1 - P [0]) * (1 - P [1]) * ... * (1 - P [n])

А вот один строковый элемент perl для вычисления значения: (входные данные - это список показателей успеха, разделенных пробелами)

 perl -0777 -ane '$p=1; $p*=1-$_ foreach @F; print 1-$p . "\n"'
2 голосов
/ 01 августа 2009

Вычислите вероятность «всех неудач» (произведение всех 1-pj, где pj - это j-й шанс на успех - вычисления вероятностей, которые представляют вероятности в любых значениях, кроме чисел от 0 до 1, являются сумасшедшими, поэтому, если вам абсолютно необходимо вместо этого проценты в качестве входных или выходных данных выполняют ваши преобразования в начале или в конце!) и вероятность «по крайней мере 1 успеха» равна 1 минус этот продукт.

Редактировать : вот некоторый исполняемый псевдокод - то есть Python - с процентами в качестве ввода и вывода, используя ваши числа (исходные и те, которые вы изменили в комментарии):

$ cat proba.py
def totprob(*percents):
  totprob_failure = 1.0
  for pc in percents:
    prob_this_failure = 1.0 - pc/100.0
    totprob_failure *= prob_this_failure
  return 100.0 * (1.0 - totprob_failure)
$ python -c'import proba; print proba.totprob(60,30,75)'
93.0
$ python -c'import proba; print proba.totprob(2,30,75)'
82.85
$
...