Назад | Начало урока | Вперед
Содержание

Глава 6

Задача 6.15 "График дней рождения."

Воспользуйтесь классом Graph для создания графика дней рождения (см. задачу 3.14).

Решение

Для того, чтобы воспользоваться классом Graph и построить график, надо создать и инициализировать значениями массив, который затем необходимо передать в качестве второго параметра конструктору класса Graph. В качестве первого параметра будет передана длина массива.

Инициировать массив значениями нам поможет функция Proba(), которая будет вызываться в цикле для заполнения массива значениями.

Код программы:


import java.io.*;
import java.util.*;
import javagently.Stream;
import java.text.*;

import javagently.*;
import myutilities.*;

class BirthDays{

double Proba(int n){
int m = 365;
double k = 1;
double p = 0;
for(int i=0; i < n; i++){
k = k*(m-i)/m;
}
p = 1 - k;
return p;
}

BirthDays(){

Graph g = new Graph("BirthDays","people", "probability" );

g.setTitle("BirthDays");
g.setColor(g.blue);
g.setSymbol(true);

// создадим массив
int m = 100;
double masProba [] = new double [m];

// заполним массив значениями
for (int i=0; i < m; i++)
masProba[i] = Proba(i);

// выведем значения массива
for (int i=0; i < m; i++)
System.out.println("masProba " + i + " " + Stream.format(masProba[i],3,2));

// построим график
for (int i = 0; i < m; i++) {

g.add(i,masProba[i]);
}

g.showGraph();

} // end constructor

public static void main (String [ ] args) {

new BirthDays();
}
}


Результат :

...
masProba 47 0,95
masProba 48 0,96
masProba 49 0,97
masProba 50 0,97
masProba 51 0,97
masProba 52 0,98
masProba 53 0,98
masProba 54 0,98
masProba 55 0,99
masProba 56 0,99
masProba 57 0,99
masProba 58 0,99
masProba 59 0,99
masProba 60 0,99
masProba 61 1,00
masProba 62 1,00
masProba 63 1,00
masProba 64 1,00
...

Подсказка

Анализ:

Интересно, что начиная с числа людей 61 вероятность становится равной единице!

Вполне вероятно, что функция Proba() не верна. Отсюда и результаты.


Назад | Начало урока | Вверх | Вперед
Содержание

Hosted by uCoz