Просто обращаясь к указанному вами коду c: (1) при условии, что носители и нормальные люди - разные породы, вам не нужно other
, потому что перевозчики не будут в normals-here
в любом случае. (2) Вы используете случайное число не так, как вы думаете, но я не могу понять, как это исправить, потому что логика c на самом деле не работает.
Сначала вы создаете случайное значение для r от 0 до 49. Скажем, это 20. Это всегда будет <50, потому что генератор случайных чисел всегда возвращает число от 0 до 49. Таким образом, код будет устанавливать переменную вирус? ложно для перевозчика. Так как Инфекция не является отрицательной, r также будет <50 + Инфекция. Так что теперь будет запущен и остальной код, который установит вирус? true для всех нормалей на патче (и включите их в красный цвет). </p>
Итак, я думаю из вашего описания, что вы хотите иметь if r + Infectivity < 50 []
. Это будет хотя бы вирус? стать правдой для некоторых значений Инфекционности. Но есть еще одна проблема, связанная с тем, что более низкое значение Инфекционной активности будет более вероятно поддерживать значение <50, что противоположно естественному значению Инфективности. </p>
В целом, вы отделили носители от нормалей. Но это не так, как работает грипп. Кто-то заражается и затем может заразить других людей, это не разные группы людей. Так что вам действительно нужно что-то вроде следующего для дизайна:
- Люди имеют состояние (обычные термины восприимчивы, заражены, удалены или вылечены)
- Большинство начинаются с восприимчивости состояние (нормальное для вас), но некоторые начинаются в зараженном состоянии (носители в ваших терминах)
- У каждого человека, который в настоящее время находится в зараженном состоянии, есть шанс изменить состояние ближайших восприимчивых лиц на зараженные
- Каждый, кто заражен, имеет шанс изменить состояние на удаленное
Еще одна вещь, которая вам нужна, - лучший способ обработки вероятности. Скажем, вы хотите, чтобы что-то произошло с вероятностью 20%, это типичный способ сделать это:
let num random 100
if num < 20 [ do something ]
Таким образом, вы генерируете случайное число и затем выполняете действие, если это число меньше вероятности, которую вы хотеть. В вашем случае вы можете иметь, например, if num < Infectivity
.