Проблема с вероятностью рождения вот алгоритм, за которым я следую, бит, я все еще сталкиваюсь с проблемой. Алгоритм:java: Принятие в алгоритме?
- Для упрощения проблемы мы делаем предположение, что каждый день года (кроме 29 февраля) одинаково вероятен на день рождения. Мы рассмотрим только 365 дней в году.
- При генерации случайного дня рождения для человека генерируйте случайное целое число в диапазоне 0-364, каждый номер будет представлять собой отдельный день в году (0 для 1 января и 364 для 31 декабря). Мы будем использовать нулевые числа для соответствия индексированию массива.
- При выполнении одного симулятора помните, что вам нужно найти только одну пару подходящих дней рождения, чтобы подсчитать количество симуляторов. То есть, как только вы определяете, что у двух людей одинаковый день рождения, вы можете остановить текущую симуляцию и начать следующую симуляцию.
- Чтобы гарантировать, что программа каждого пользователя ведет себя одинаково (чтобы мы могли автоматически оценивать представление каждого), вам нужно создать новый случайный объект для каждого прогона моделирования, и вам нужно будет засеять случайный объект с количеством пробег, который вы имитируете (первый запуск симуляции будет использовать целое число 1 в качестве семени, второй запуск будет использовать 2 и т. д.). Вам нужно создать новый случайный объект для каждого прогона моделирования, а не по случайному номеру [не использовать метод Math.random() в этой программе].
- Во время одной симуляции вам нужно будет следить за днями, которые `` соответствуют дню рождения кого-то или же отслеживают количество дней рождения, которые происходят в любой день. Есть несколько структур, которые мы изучили в этом модуле MOOC, которые можно было бы легко решить для решения этой проблемы. Вы можете выбрать структуру по своему выбору. Обратите внимание, что цель состоит в том, чтобы просто определить, приходят ли два дня рождения в одну дату.
- При возврате окончательного результата возвращайте процент в диапазоне 0.0 - 100.0.
введите код здесь
import java.util.HashSet;
import java.util.Random;
import java.util.Scanner;
import java.util.Set;
public class Logic {
public static void process(int size, int count)
{
int number = 0;
Set<Integer> bdays = new HashSet<>();
int x[] = new int[size];
Random random = new Random();
random.setSeed(1);
int matches = 0;
boolean out = false;
for (int i = 0; i < count; i++) {
for (int j = 0; j < size; j++) {
number=(random.nextInt(365)+1);
}
for (int j = 0; j < count; j++) {
if (bdays.contains(number)) {
matches++;
}
else
{ bdays.add(number);
out = true;
break;}
if (out) {
out = false;
break;
}
}
}
double prob = 100*(double) matches/count;
System.out.println("The probability for two students to share a birthday is " + prob + ".");
}
public static void main(String[] args) {
Scanner inp = new Scanner(System. in);
System.out.println("How many students?");
int num = inp.nextInt();
System.out.println("How many times?");
int times = inp.nextInt();
process(num,times);
}
}
... Так что не работает в этом коде? Каков ваш реальный вопрос? – Shark
Почему включен C++-тег? – Devolus
это ваша домашняя работа? – yossico