Задать вопрос

Как запрограммировать формулу суммы вероятности?

Здравствуйте! Стыд и срам, но что поделать :-)
Все знают формулу вероятности суммы совместных независимых событий:
P(A+B) = P(A)+P(B)-P(A)*P(B)
есть формула для суммы n событий, которая строится по аналогии:

Т.к. события независимые, то все вероятности произведений равны произведениям вероятностей.
не понимаю, как её запрограммировать. Т.е. задача — написать функцию, которая принимает в качестве аргумента массив вероятностей A1...An, собственно количество n, и которая возвращает вероятность суммы.
Понимаю C++, Delphi :-)

Заголовок, очевидно такой:

float getChanceSumm(float * arr, int n){
    //OMG
}


Задачу можно свести к написанию другой функции — получение суммы всех сочетаний из k элементов без повторений, но от этого не легче.

Пипл, хэлп! :-) Заранее спасибо. В пятницу мозги уже не те. Надеюсь только у меня

UPD: суммы, которые в общей формуле идут не по всем индексам, а только по не повторяющимся.

UDP2:

Благодаря подсказке уважаемого Ents получилась такая простая функция:
float getSummChance(float * arr, int num){
	float res,temp;

	if (num==1){
		res = arr[0];
	}else
		if (num==2) {
			res = arr[0]+arr[1] - arr[0]*arr[1];
		}else{
			temp = getSummChance(arr,num-1);
			res = arr[num-1]+temp - arr[num-1]*temp;
		}

	return res;
}



Может еще кому-нибудь в какую-нибудь тяпницу пригодится вычислить вероятность суммы совместных независимых событий, так что не смотря на то, что этот вопрос — позор моей лысой голове, я все же не буду его удалять :-)
  • Вопрос задан
  • 3481 просмотр
Подписаться 7 Оценить Комментировать
Решения вопроса 1
xanep
@xanep
В такой постановке задачи (сумма совместных и независимых событий), намного проще перейти к противоположным событиям и воспользоваться формулой

Пользуйтесь на здоровье :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@Ents
напишите рекурсивную функцию
P(A1, A2, A3, A4, ..., An) = P(A1) + P(A2, A3, A4, ..., An) — P(A1) * P(A2, A3, A4, ..., An)
Ответ написан
xanep
@xanep
P(A+B) = P(A)+P(B)-P(A)*P(B)
Это формула только для независимых событий.

Для зависимых событий правильная ваша вторая формула (что для n событий) которая для двух будет такая:
P(A+B) = P(A)+P(B)-P(A*B)
или она же
P(A+B)=P(A)+P(B)−P(A)*P(B∖A)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы