C++ Bc. 28 cpp
#include <cstdlib>
#include <ctime>
#include <cmath>
#include <iostream>
#include <iomanip>
double rab(double a, double b) // nahodne cislo z intervalu <a, b>
{
return a + (b-a)*rand()/(RAND_MAX + 1.0);
}
double pokus()
{
double novak = rab(16.00, 17.00); // pan Novak prichazi na zastavku
double interval = 10.0/60.0; // interval autobusove linky
double zpozdeni = 5.0/60.0; // maximalni zpozdeni
double bus = 15.00 + 30.0/60.0; // prvni testovany autobus
double cas; // cas prijezdu autobusu
bool obsazen; // autobus je/neni obsazen
do
{
bus += interval;
cas = bus + rab(0, zpozdeni);
obsazen = rab(0,5) > 4; // kazdy paty autobus je obsazen
}
while (cas < novak || obsazen);
return (cas - novak)*60; // cekani v minutach
}
int main()
{
using namespace std;
srand(time(0));
cout.setf(ios_base::fixed, ios_base::floatfield);
for (int n=1; n<=10; n++)
{
const int N=100000;
double suma=0, sum2=0;
for (int i=0; i<N; i++)
{
double p = pokus();
suma += p;
sum2 += p*p;
}
double prumer = suma/N;
double variance = sum2/N - prumer*prumer;
double stddev = sqrt(variance); // smerodatna odchylka
cout << setw(2) << n << " : " << prumer << " " << stddev << endl;
}
}
[ Zpět ]