#java #arraylist #birthday-paradox
Вопрос:
Шансы должны быть примерно на 10% больше, насколько я понимаю. Однако я никогда не смогу преодолеть 7 процентов, даже если проведу 7000 тестов. Я полагаю, что это, должно быть, расчет количества совпадений, но я не могу понять, как это неправильно.
import java.util.ArrayList;
import java.util.Random;
public class PersonRoom {
private int persons;
private int loops;
public int getPersons() {
return persons;
}
public int getLoops() {
return loops;
}
public PersonRoom(int persons, int loops) {
this.persons = persons;
this.loops = loops;
}
public void generatePersons(ArrayList<Person> students) {
Random rng = new Random();
for(int i = 0; i < persons; i ) {
students.add(new Person(rng.nextInt(365) 1));
}
}
public boolean matchBirthday(ArrayList<Person> students) {
for(int i = 0; i < students.size() - 1; i ) {
if(students.get(i).getBirthday() == students.get(i 1).getBirthday()) {
return true;
}
}
return false;
}
public double probability() {
double matchCount = 0;
for(int i = 0; i < loops; i ) {
ArrayList<Person> students = new ArrayList<>();
generatePersons(students);
if(matchBirthday(students)) {
matchCount ;
}
}
return (matchCount/loops) * 100;
}
}
Комментарии:
1. Пожалуйста, сформулируйте, что вы думаете о парадоксе дня рождения, и посмотрите
matchBirthday
, что именно происходит.