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

Ответить
mary_a87
Сообщения: 2
Зарегистрирован: 08 май 2009, 00:35

08 май 2009, 00:46

Пожалуйста, кто-нибудь помагите решить задачу, очень надо для дипломной работы! Заранее всех благодарю за помощь!!!
Задача состоит в том, что бы найти вероятность совпадения хотя бы 2-х дней рождений в группе студентов из 25 человек. Модель задачи заключается в следующем необходимо присвоить какому-нибудь счетчику 0, для дальнейшего сохранения в нём результатов опыта. Вызывать функцию для выдачи 25-ти случайных чисел, потом распределить их по возвростанию и проверять на совпадения. Если совпадения имеются, прекратить проверять и в счетчике записывается еденица. И проводится следующий опыт, если совпадений не оказалось, то счетчику добавляется ноль. Потом результаты опытов делятся на общее количество опытов и получается искомая вероятность.
Пожалуйста помогите написать эту задачу на языке C++...
Albor
Сообщения: 482
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

08 май 2009, 14:24

В каких пределах должны генерироваться даты, или просто генерировать случайные числа? Как определяется количество опытов, тоже случайным образом?
mary_a87
Сообщения: 2
Зарегистрирован: 08 май 2009, 00:35

08 май 2009, 15:01

Даты дней рождений выбираются случайные числа от 1 до 365 дней в году. А количество опытов просто задаётся любое число...
Albor
Сообщения: 482
Зарегистрирован: 06 сен 2004, 13:34
Откуда: Днепропетровск

08 май 2009, 16:58

mary_a87 писал(а):Даты дней рождений выбираются случайные числа от 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;

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