1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| def update(network, informedPeople,rumor_liste,p,arguments):
""" Fonction qui va mettre a jour l'etat du reseau """
numberOfNewInformedPeople = 1
newInformedPeople = list(informedPeople)
for i in range(len(informedPeople)):
if informedPeople[i]: # pour chaque personne informee
candidat = []
for j in range(len(informedPeople)): # creation de la liste des amis de la personne
if i!=j :
if 'd' in arguments.keys():
if network[i][j]:
candidat += [j]
else:
if network[i][j] and not newInformedPeople[j] :
candidat+=[j]
if len(candidat)>0:
rumor=rumor_liste[i]
selectedCandidat = randint(0,len(candidat)-1) # choix d'un ami a informer
choose=candidat[selectedCandidat]
newInformedPeople[choose]=True
if not(informedPeople[choose]):
numberOfNewInformedPeople +=1
if arguments['u']!="stable":
if arguments['u']=="rewrite":
rumor=rumor_liste[i]
rumor_liste[choose]=transmission(arguments,rumor)
elif arguments['u']=="mixture":
for x in range(len(rumor_liste[choose])):
for y in range(len(rumor_liste[i])):
if rumor_liste[choose][x] != rumor_liste[i][y]:
proba=[rumor_liste[choose][x] for i in range(p*10)]
for i in range(10-p*10):
proba.append(rumor_liste[i][y])
rumor_liste[choose][x]=rumor_liste[choose].replace(rumor_liste[choose][x],str(choice(proba)))
else:
if rumor_liste[choose] =='X':
rumor=rumor_liste[i]
rumor_liste[choose]=transmission(arguments,rumor)
informedPeople[:] = newInformedPeople
return numberOfNewInformedPeople , informedPeople ,rumor_liste |
Partager