Слайд 2Дано
Есть вирус, вероятность заражения которым при контакте – 0,2
Инкубационный период – 3
дня
После этого пациент болеет 7 дней
Через 7 дней пациент умирает с вероятностью 0,1
Переболевшие приобретают иммунитет
За время болезни пациент распространяет вирус
Слайд 3Класс вирус
Вероятность заражения
Инкубационный период
Болезнь
Вероятность летального исхода
Слайд 4Класс пациент
Идентификатор
Состояние
Здоров
Носитель вируса в инкубационной стадии
Болен
Приобрел иммунитет
Умер
Слайд 5Класс пациент
Идентификатор
Жив/мертв
Заражен / не заражен
Срок от начала заражения
По вирусу определяем:
Инкубационный период
Открытое течение
болезни
Если пациент жив после болезни, то он обладает иммунитетом
Слайд 6Класс «Много пациентов»
Отражает состояние пациентов на определенном шаге во времени
Слайд 7Класс «Эпидемия»
Считает время
На каждом шаге считает:
Новых зараженных
Меняет сроки болезни зараженным
Убивает / выздоравливает
Считает статистику
Слайд 8Общий алгоритм
Создаем вирус
Создаем пациентов
«Заражаем» нескольких
Запускаем цикл:
Перемешиваем пациентов
«Заражаем» контактирующих, если у них нет
иммунитета и они живы
У зараженных – увеличиваем срок болезни на 1
Убиваем переболевших или придаем им иммунитет
Считаем статистику
Повторяем
Слайд 9Как перемешать пациентов и найти контактирующих?
Один из вариантов! (Возможны и другие)
Пробегаем по
пациентам и находим зараженного
Случайным образом генерируем 5-10 номеров контактирующих
Если они живы и без иммунитета – заражаем их с заданной вероятностью
Слайд 11namespace ConsoleApp6
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Эпидемия");
Console.ReadKey();
}
}
}
Слайд 18Добавлен метод для заполнения массива пациентов