2020-10-17 15:57:06 +03:00

35 lines
823 B
Kotlin

package ru.mipt.npm.sim.epidemics
import org.apache.commons.math3.random.RandomGenerator
interface Behavior {
/**
* Generate daily contact for given [subject]
*/
fun generateDailyContacts(generator: RandomGenerator, subject: Subject, date: Int): List<Int>
}
object DefaultBehavior : Behavior {
@OptIn(ExperimentalStdlibApi::class)
override fun generateDailyContacts(
generator: RandomGenerator,
subject: Subject,
date: Int
): List<Int> = buildList {
subject.closeContacts.forEach { contact ->
if (generator.nextDouble() < 0.5) {
add(contact)
}
}
subject.otherContacts.forEach { contact ->
if (generator.nextDouble() < 0.1) {
add(contact)
}
}
}
}