Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2016, 19:09   #1
lanc3r
Новичок
Джуниор
 
Регистрация: 14.05.2010
Сообщений: 1
По умолчанию Подсчет вероятности

Здравствуйте, возникла ситуация, решить которую я не в силах на данный момент(
Есть математическая формула - если P(k,n) - вероятность k успехов в n
испытаниях, то P(k,n+1)=Pn+1*P(k−1,n)+(1−Pn+1)P(k, n), где Pn+1 - вероятность успеха в событии с индексом n+1
Начальные условия: P(0,0)=1; P(-1)(x) всегда =0

Я решил это реализовать в виде двумерного массива. Вероятности Pn+1 считаем в другой процедуре. Но возникла проблема - мне нужно считать вероятности k успехов в n испытаниях не для одного случая, а для 3^15 случаев, то есть на входе в процедуру у нас не 15 вероятностей, а 45, по 3 на каждый исход, и они могут быть скомбинированы между собой. Решено было подавать на вход еще один двумерный массив, который имел значения в [1-3][1-15] индексах.
p1-считаемый массив, pn1- массив со значениями и размерность 3на15( фактически он 15на15, но значения в 3на15), b - размерность массивов, возьмем для примера 16 (0...15)
Можно ли сделать массив двумерного массива, чтобы запоминать и в последствии сравнивать некоторые значения p1 для каждого из случаев pn1?
Как сделать так, чтобы процедура считала все значения массива pn1?
В данном примере берется всегда первое значение (pn1[1][j+1]) из трех для каждой вероятности pn1, нужно чтобы был перебор от [1] до [3]
То есть посчитали p1 для значений pn1[1][x], следующий случай - считаем p1 для значения pn1[1][1-14], а pn1[2][15] и так далее перебором, 3^15 случаев.

Код:
void ver (float** p1, float** pn1,int b)
{
   p1[0][0]=1;
   for (int i=0; i<b;i++)
	 for (int j=0; j<(b-1);j++)
	 {
	   if (i>j)
		p1[i][j]=0;
           if (j>=(i-1))
	   {
	   if (i==0)
            p1[i][j+1]=(1-pn1[1][j+1])*p1[i][j];
	   else
	    p1[i][j+1]=pn1[1][j+1]*p1[i-1][j]+(1-pn1[1][j+1])*p1[i][j];
	   }
	 }
}
lanc3r вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет вероятности встречи в тексте двухсимвольных сочетаний just4question Помощь студентам 8 23.11.2012 03:39
теория вероятности Alinka_ Помощь студентам 1 14.10.2012 08:18
!!!теория вероятности Владисла8 Фриланс 0 15.05.2012 23:12
теория вероятности!!! Владисла8 Фриланс 5 15.05.2012 23:09
Теория вероятности sqr Свободное общение 5 28.02.2012 14:31