J'essaie d'écrire une fonction qui simule X nombre d'expériences de retournement de pièces biaisées (H = 0.6, T = 0.4), qui consiste en N retournements de pièces, pour répondre à la question " Quelle est la valeur attendue du nombre de groupes après les retournements de pièces N? " Le groupe, par définition, est la séquence maximale des mêmes valeurs dans un ordre consécutif. Par exemple: ['H', 'H', 'H', 'H', 'H', 'H', 'T', 'H', 'H', 'H']
a 3 groupes et ['T', 'H', 'H', 'H', 'T', 'T', 'H', 'H', 'H', 'H']
a 4 groupes.Python - Répéter une expérience de retournement de pièces biaisée
# Libraries
import random
from itertools import groupby
from itertools import chain
# Function for biased coin
def flip(p):
return 'H' if random.random() < p else 'T'
# Number of coin flips
N = 10
flips = [flip(0.6) for i in range(N)]
print (len(list(groupby(flips))))
# Function to simulate X iterations of N coin flips
def simulate(X, N):
Outcome = [] # Empty list to store each experiment's result
# X Number of coin simulations
for i in range(X):
# Coin simulation of N flips
flips = [flip(0.6) for j in range(N)]
# Append experiment's result into Outcome list
Outcome.append(len(list(groupby(flips))))
# Expected Value of the number of groups
sum(Outcome)/X
Une idée pourquoi cela ne fonctionne pas? J'ai l'erreur suivante TypeError: unsupported operand type(s) for /: 'list' and 'int'
Que signifie "ne fonctionne pas"? 'Outcome/X' (diviser une liste par un entier - pas une chose) en fait probablement partie, mais autre chose? – Ryan
Ca marche pour moi! Qu'attendez-vous et qu'est-ce que vous obtenez qui vous fait sentir que cela ne fonctionne pas! – Shobeir
J'ai eu l'erreur suivante 'TypeError: type (s) d'opérande non supporté (s) pour /: 'list' et 'int' –