Bonjour,
ton espérance est donnée par \(E(T_n)=N\left(1-\left(1-\dfrac{1}{N}\right)^n\right)\).
Lorsque \(N\) est fixé et que l'on fait tendre \(n\to+\infty\) alors \(\left(1-\dfrac{1}{N}\right)^n\to 0\) (car cela correspond au terme général d'une suite géométrique de raison \(1-\dfrac{1}{N}<1\) donc ton espérance tend vers \(N\), ce qui peut paraître normal : si on joue un très grand nombre de fois, toutes les cases vont finir par se remplir donc le nombre de cases non vides tend bien vers \(N\).
Si on fixe \(n\) et que l'on fait tendre \(N\to+\infty\), alors que se passe-t-il ? Si le nombre de tirages reste à \(n\) et que le nombre de cases tend vers \(+\infty\), est-ce que cela changera le nombre de cases non vides ? Combien peut-on en avoir au maximum ? Pour le prouver par un calcul de limite, il faudrait passer par des équivalents ou des développements limités mais je pense que c'est hors programme...
Pour ton programme, pourquoi fais-tu 3 tirages au hasard ? Un seul suffit, cela correspond à un lancer que l'on va reproduire \(n\) fois.
De plus ta condition alternative,
ramène systématiquement le nombre de boules dans la cas i-1 à 0, alors qu'il faudra cumuler.
Je te proposer donc de faire directement l'affectation de la valeur trouvée dans la case de rang i-1 :
Code : Tout sélectionner
import random
def Tirage(n,N):
liste = [0 for i in range(N)]
for i in range(n) : # on réalise n lancers de boules
tirage = random.randint(1,N) # dans N cases
liste[tirage-1] = liste[tirage-1] + 1 #le nombre tiré fait augmenter la case tirage-1 d'une unité (une boule de plus)
return liste