Я хочу имитировать парадокс дня рождения в java. По какой-то причине мой результат (вероятность) продолжает очень близко приближаться к 1, например. моделирование (10) -> 0,9268. В начале вы можете увидеть вероятности, по которым мои симуляции должны быть близки. Я давно искал ошибку в своем коде, поэтому надеюсь, что кто-то из вас сможет мне помочь. Я искал другие коды парадоксальности дня рождения, но ни один из них, похоже, не смог помочь мне с моим странным выходом. стр. вы можете игнорировать // TODO, исправить ошибку, как только я получу код и работаю. Спасибо заранее!День рождения Парадокс
static final int DAYS_IN_YEAR = 365;
static final int NUMBER_OF_SIMULATIONS = 500;
LCG random;
HashSet<Integer> birthdaySet = new HashSet<Integer>();
BirthdayProblem2(){
birthdaySet.clear();
random = new LCG(); //random numbers between 0 and 1
}
int generateBirthday(){ //generates random birthday
return (int) Math.round(Math.random()*DAYS_IN_YEAR); //TODO use LGC
}
double iteration(int numberOfStudents){ //one iteration from the simulation
int sameBirthdays = 0;
for (int i = 0; i < numberOfStudents; i++){
int bd = generateBirthday();
if (birthdaySet.contains(bd)){
sameBirthdays++;
} else {
birthdaySet.add(bd);
}
}
return (double) sameBirthdays/numberOfStudents; //probability of two students having the same birthday
}
void simulation(int numberOfStudents){
double probabilitySum = 0;
for (int i = 0; i < NUMBER_OF_SIMULATIONS; i++){
probabilitySum += iteration(numberOfStudents);
}
System.out.printf("For n=%d -> P=%.4f \n", numberOfStudents, probabilitySum/NUMBER_OF_SIMULATIONS);
}
private void start() {
simulation(10); //should be about 0.1
simulation(20); //should be about 0.4
simulation(23); //should be about 0.5
simulation(35); //should be about 0.8
}
public static void main(String[] argv) {
new BirthdayProblem2().start();
}
}
метода 'итерации()' должно возвращать логическое значение, для того, или нет, есть студенты с таким же днем рождения. Количество возвращаемых истинных значений, деленное на количество вызовов, равно вероятности. – Andreas