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

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

Вернуться   Форум программистов > Работа для программиста > Фриланс
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.02.2016, 10:54   #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 случаев.
mail: lanc3r@yandex.ru
skype: lanc3r666. Пишите на почту, в скайпе буду позже

Код:
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 вне форума Ответить с цитированием
Старый 04.02.2016, 11:06   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,830
По умолчанию

Вам не нужен массив. Вам нужна функция с двумя параметрами...
p51x вне форума Ответить с цитированием
Старый 04.02.2016, 12:30   #3
JIeIIIa
Пользователь
 
Регистрация: 21.12.2011
Сообщений: 54
По умолчанию

Если еще актуально, пишите: stealth(собака)bigmir.net
JIeIIIa вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет вероятности lanc3r Общие вопросы C/C++ 0 03.02.2016 19:09
Подсчет вероятности встречи в тексте двухсимвольных сочетаний just4question Помощь студентам 8 23.11.2012 03:39
!!!теория вероятности Владисла8 Фриланс 0 15.05.2012 23:12
Теория вероятности ТРОЯН=) Помощь студентам 4 16.05.2011 14:05
Теория вероятности joga Microsoft Office Excel 14 13.10.2008 20:21