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-vous
chance code> à la ligne 6 tout en soi?