PDA

Просмотр полной версии : Помогите с задачей о совпадении дней рождения!



mary_a87
08.05.2009, 00:46
Пожалуйста, кто-нибудь помагите решить задачу, очень надо для дипломной работы! Заранее всех благодарю за помощь!!!
Задача состоит в том, что бы найти вероятность совпадения хотя бы 2-х дней рождений в группе студентов из 25 человек. Модель задачи заключается в следующем необходимо присвоить какому-нибудь счетчику 0, для дальнейшего сохранения в нём результатов опыта. Вызывать функцию для выдачи 25-ти случайных чисел, потом распределить их по возвростанию и проверять на совпадения. Если совпадения имеются, прекратить проверять и в счетчике записывается еденица. И проводится следующий опыт, если совпадений не оказалось, то счетчику добавляется ноль. Потом результаты опытов делятся на общее количество опытов и получается искомая вероятность.
Пожалуйста помогите написать эту задачу на языке C++...

Albor
08.05.2009, 14:24
В каких пределах должны генерироваться даты, или просто генерировать случайные числа? Как определяется количество опытов, тоже случайным образом?

mary_a87
08.05.2009, 15:01
Даты дней рождений выбираются случайные числа от 1 до 365 дней в году. А количество опытов просто задаётся любое число...

Albor
08.05.2009, 16:58
Даты дней рождений выбираются случайные числа от 1 до 365 дней в году. А количество опытов просто задаётся любое число...


#include <iostream.h>
#include <time.h>
#include <algorithm>

int getday()
{
return rand()%365+1;
}

void printday(const int * pint)
{
for(int i=0;i<25; i++)
cout<<*(pint+i)<<",";
cout<<endl;
}

void main()

{
int cnt(0);
int data[25]={0};

srand(time(0));
int exp=rand()%11+10;// 10~20 Экспериментов
for(int j=0;j<exp;j++)
{
std::generate(data,data+25,getday);//заполняем массив дней
std::sort(data,data+25);//сортируем

for(int i=0;i<24;i++)
if(data[i]==data[i+1])
{
cnt++;
printday(data);
break;
}
}
cout<<"provedeno "<<exp<<" experementov.\n"<<"sovpadeniy "<<cnt<<endl;

}
"Раскраску" программы оставляю вам :).