我想创建一个连接图,其中每个节点代表我工作的员工。我希望能够通过办公室进行冷传播模拟。与受感染者有关的人有一定的可能性感冒,并继续。我怎样才能做到这一点?
我是否也可以设定受感染者保持感染的时间限制?
答案 0 :(得分:0)
你正在寻找的一个(公认可以优化的)版本,我相信看起来像这样。
percentSpread = #integer representing percent chance of cold to spread
percentBetter = #chance someone who has the cold gets better
cold = #some node in your graph we'll call office, the first guy sick
sickness = [] #the array that keeps track of the people with colds in the office
def sickevent(percent): #lets us know if a sick person gets better or a nearby person gets sick
if randint(1,100) < percent:
return True
else:
return False
sickness.append(cold)
while len(sickness) >0:
for sick in sickness:
if sickevent(percentbetter):
sick['issick'] = False
sickness.remove(sick)
else:
for potential in office.neighbors(sick):
if potential['beensick'] = False and potential['issick']=False:
if sickevent(percentspread):
potential['issick'] =True
potential['beensick'] = True
sickness.append(sick)
应该让你去。可以进行大量定制。如果你想知道在疾病死亡之前谁生病了,你可以通过迭代检查谁已经'besick'= true。请注意,您应该初始化所有节点以使疾病相关属性= False。 您可以根据节点或边缘将其更改为具有某些扩展或固化值。 此图表假定某人只能接触他们所连接的病人。如果你希望每个人都有机会让每个人都生病,你应该有一个初始图表,以某种方式连接每个人(但不是每个人),并在图表上为每个人分配每个边缘的传播机会。第一张图中彼此的距离或类似的东西