from random import *
def simulation (n, k):
som=0
for i in range (n):
a=randint(0,1)
b= randint(0,1)
c= randint(0,1)
d= randint(0,1)
e= randint(0,1)
S=a+b+c+d+e
if S==k:
som=som+1
f=som/n
return f
from random import *
def simulation (n, k):
som=0
for i in range (n):
a=randint(0,1)
b= randint(0,1)
c= randint(0,1)
d= randint(0,1)
e= randint(0,1)
S=a+b+c+d+e
if S==k:
som=som+1
f=som/n
return f
"je dois sortir le calcul de f et le 'return f' de mon indentation ? " --- oui
je te l'ai indiqué ici : 05-12-21 à 10:12
et là : 05-12-21 à 21:16 (et suivants, dont ce matin)
fais ce changement (comprends-tu bien sa nécessité ?)
et à la suite de ton programme rajoute les lignes nécessaires pour afficher les fréquences pour k de 0 à 5
oups désolée
tu as déjà fait la modif (je viens de mettre mes lunettes :/)
reste donc la boucle d'appel de la fonction, à faire
mais est ce que c'est normal que j'obtienne 0.3124?
J'ai cru comprendre dans vos précédents messages que j'étais censé obtenir 0.03125 ...
f = 0.3125 est la valeur exacte, calculée avec la formule donnée par la loi binomiale.
dans cette valeur exacte, intervient notamment le coefficient binomial (3 parmi 6) = 6 combinaisons différentes.
or dans le programme, le nombre de succès (1) sont générés aléatoirement (randint),
et donc la fréquence d'obtention du "3" peut être différente du calcul théorique ;
sur un grand nombre d'essais (10000) f aura tendance à se rapprocher de la valeur exacte,
mais il est normal de trouver par ex 0.3124 ou 0.3219.
fais tourner plusieurs fois ton programme pour le constater.
C'est (x parmi 6)??
J'ai fait absolument tous mes calculs avec (x parmi 5)
Pour p(X=3) j'ai fait : (3parmi5)x 0.53x 0.52=0.3125
Est ce que c'est bon ou pas du tout ?
e) Calculer P(X-3)
oui, c'est 5, évidemment...
autant pour moi, ça m'apprendra à faire plusieurs choses en même temps. :/
p(X=3) = (3parmi5)x 0.53x 0.52=0.3125 c'est exact
pour f) tu calcules la probabilité des autres valeurs de X
autant pour moi, j'ai eu un coup de chaud
Pour la question b) où il m'est demandé d'obtenir la fréquence de chaque compartiment pour 10 000 lancers, comment je suis censé faire ça ?
je dois faire une boucle et je dois entrer "print(5)" en dessous de "for i in a range (n)?
b)
pour k=3, sous la fonction (dans le programme),
si tu tapes print("pour k = 3, fréquence = ", simulation(10000,3))
tu vas obtenir la fréquence pour k=3
----
pour obtenir les fréquences de toutes les valeurs de k=0 à 5
oui, tu dois faire une boucle de la forme :
for i in range (....?):
print (.... à adapter selon le modèle ci-dessus....)
une petite remarque :
quand tu calcules, avec la loi binomiale, toutes les probas pour X de 0 à 5,
et que additionnes ces probabilités, tu sais que tu dois toujours trouver 1.
on l'apprend dans le cours.
en revanche, par curiosité,
tu calculeras la somme des fréquences que tu trouveras via python...
J'ai voulu faire un test avec
print("pour k = 3, fréquence = ", simulation(10000,3))
mais que dois-je entrer dans la console pour obtenir ma fréquence ?
for i in range (n)
? pas dans la console,
tu lances directement un "run" ou "exécuter" directement
la petite flèche verte
----
Juste pour être sûre, je dois bien mettre cette ligne en dessous de
for i in range (n)
non, je m'explique :
ton programme doit avoir ces 3 parties, l'une après l'autre :
1) importation du module : from random import * ---- fait
2) la fonction simulation
qui commence par simulation (n, k):
et se termine par return f ----- fait
3) le corps principal du programme
c'est là que tu vas mettre ta (nouvelle) boucle qui va appeler la fonction
autant de fois que nécessaire
pour que ce soit bien clair, voici le code pour obtenir la fréquence pour k= 3.
l'instruction print("pour k = 3, fréquence = ", simulation(10000,3))
est écrite à la suite, dans le programme et après la fonction , pas dans la console.
from random import *
def simulation (n, k):
som=0
for i in range (n):
a=randint(0,1)
b= randint(0,1)
c= randint(0,1)
d= randint(0,1)
e= randint(0,1)
S=a+b+c+d+e
if S==k:
som=som+1
f= som/n
return f
print("pour k = 3, fréquence = ", simulation(10000,3))
ahhhh oui d'accord maintenant j'obtiens 0.3103 c'est tout de suite beaucoup plus cohérent.
Pour la dernière question sur laquelle j'éprouve des difficultés, la question e)Calculer P(X=3) et comparer le résultat obtenu au a) et expliquer cette différence
J'ai P(X=3)=0.3125
et au a) j'ai également obtenu 0.3124, il n'y a pas de différence, ou alors je suis censée prendre la valeur théorique, soit 0.03125?
P(X=3)=0.3125 je confirme
a) j'ai également obtenu 0.3124
que je sache, 0.3124, ou 0.3103 (trouvé via python) est différent de 0.3125 (valeur exacte), non ?
et si tu fais tourner plusieurs fois ton programme,
il y a beaucoup de chances pour que tu trouves encore un autre nombre différent de 0.3125 !
relis attentivement 06-12-21 à 16:44
et la petite remarque à la fin de 06-12-21 à 20:58
J'ai donc fait la somme des fréquences que j'ai trouvé via python et j'obtiens 0.9961. Or c'est différent le fait d'obtenir une fréquence et une probabilité, dans le sens où pour P(X=3) j'ai trouvé 0.3125 et pour la fréquence du compartiment 3 sur 10000 lancers j'obtiens 0.3124. La probabilité de chaque compartiment est égale à 1 et la probabilité des fréquences de chaque compartiment sur 10 000 lancers = 0.9961
Cela s'explique du fait que la somme des probabilités d'une expérience est forcément égale à 1 contrairement à une fréquence où ce n'est pas nécessairement le cas
Est ce cela la cause de cette différence ?
bonjour jeansch
J'ai donc fait la somme des fréquences que j'ai trouvé via python et j'obtiens 0.9961
oui, et si tu relances ton programme plusieurs fois, et que tu calcules à nouveau cette somme de fréquence,
tu vas trouver des nombres toujours plus ou moins proches de 1.
La probabilité de chaque compartiment est égale à 1
ça non, c'est la somme des probabilités de tous les compartiments (toutes les valeurs de la variable aléatoire X).
- par les probabilités (loi binomiale), on trouve exactement 1
- par les fréquences sur cette expérience, on trouve aux environs de 1
ceci n'était qu'un aparté dans ton exo,
mais je souhaitais attirer ton attention sur le distinction entre proba via calcul,
et fréquences via cette expérience aléatoire (où les nombres sont générés au hasard à chaque fois)
si d'aventure, au lieu de 10000 simulations, tu en fais 100000 ou 1 000 000,
- si ton ordi tient le coup ^^ -
tu constateras que tes fréquences sont plus 'affinées', plus proches des valeurs calculées p(X=k)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :