On m'a demandé de simuler si une imprimante fonctionne après chaque heure en une journée (c'est-à-dire 24 heures). Si l'imprimante fonctionne après l'heure, il a une probabilité de 90% de travail et de probabilité de 10% d'être cassée à la fin de la prochaine heure.
Si cassé, il a une probabilité de 50% de travail ou d'être enfreint la prochaine heure. P>
suppose une distribution uniforme aléatoire et que la première heure, l'imprimante fonctionne. p>
Mon code en Python est ci-dessous: p> Mon problème est que je ne peux pas simuler l'événement actuel en fonction de l'événement précédent, c'est-à-dire si le L'événement précédent est cassé Comment puis-je régler la probabilité de l'événement en cours à 0,5. p> p>
3 Réponses :
Vous devez mémoriser l'état de l'imprimante à l'étape précédente (heure) et ajuster le seuil de calcul de la sortie binaire aléatoire:
Vous devez définir votre table de probabilité avant, comme celui-ci:
import random
# The table above
table = [[.9,.1],[.5,.5]]
def simulate():
# 0 means working, 1 means broken
current_state = 0
# Initialise variable
next_state = current_state
for i in range(24):
# Get a number between 0 and 1
chance = random.uniform(0, 1)
# Given my current state (line 0 or 1), what chance do I have
# to work the next hour ?
if chance <= table[current_state][0]:
# The chance variable has more chance to be under if the number
# in the table is high.
next_state = 0
else:
# BROKEN
next_state = 1
current_state = next_state
print("Current state " + ("Working" if current_state == 0 else "Broken"))
if __name__ == "__main__":
simulate()
avec ce script: J'ai des résultats suivants: p>
Tout d'abord, vous pouvez faire
chance = np.random.uniforme (taille = 24) code> au lieu de la boucle pour la boucle. Deuxièmement, pourquoi avez-vouschance code> à la ligne 6 tout en soi?