Bonjour
J'ai tapé ce programme mais il ne s'exécute pas...
interpréter ce que pourrait simuler cette fonction et la valeur renvoyée à la fin de son exécution.
je pense qu'il s'agit de choisir n fois un nombre aléatoire compris entre 1 et 10 et de calculer la fréquence du nombre de tirages 4.
c'est bien ça?
que signifie la ligne 7
if random.ranint(1,10)<=4
?
merci de votre aide
Bonjour
ton interprétation est correcte
en ce qui concerne le programme, je ne saurais pas te dire ce qui ne va pas. J'ai recopié exactement ton programme, il fonctionne de mon côté
Bonjour,
"il ne fonctionne pas" ça ne veut rien dire
un message d'erreur ?
rien ne se passe ?
forcément ! ce programme ne fait que définir une fonction
il ne l'exécute pas.
pour l'exécuter : par exemple en tapant en ligne de commande
>>> echant(100)
random.randint(1,10) fait appel à la fonction randint() du module random (qui a été importé)
cette fonction prend deux paramètres : 1 et 10
et retourne un nombre entier (int) aléatoire (random, rand) entre 1 et 10
détails dans la doc
et détails aussi dans la doc générale de Python sur les différentes façons "d'importer" des modules et des fonctions de ces modules.
voir la différence entre :
from math import * : importe toutes les fonctions du module math, qui sont alors accessibles directement
import random : ne fait que importer le module random, et pour chaque fonction il faut préciser de quel module elle vient
une fois qu'on a tapé le texte du module, il faut exécuter le module pour que ça définisse la fonction echant()
avec eduPython on clique sur le bouton vert.
avec d'autres Python voir quel est le bouton qui lance le module.
salut
sauf erreur , il faudrait corriger cette phrase :
je pense qu'il s'agit de choisir n fois un nombre aléatoire compris entre 1 et 10 et de calculer la fréquence du nombre de tirages 4.
car on effectue déjà n tirages et on veux surement recenser les tirages indiquant un
nombre 4
ok merci
ensuite on me donne une étude statistique portant sur 2000 écrans dans un tableau :
pixels défectueux o 1 2 3 4 5 6
et les effectifs correspondants (nombre d'écrans): 1451 -236-...
Deduire de ce tableau une loi de probabilité pour le nombre de pixels defectueux par ecran
la variable aléatoire peut prendre 7 valeurs et P(X=0)=1451/2000=0,7255
je calcule les probabilités pour chacun des pixels défectueux
c'est ça?
ecrire une fonction en python afin de simuler le nombre d'écrans comportant au moins 3 pixels défectueux sur un echantillon de n ecrans
je pensais reprendre le programme précédent avec le test
if random.randint(0,6)3
return succes
qu'en pensez vous?
merci
je ne suis pas doué en proba (à mon époque il n'y en avait pas du tout)
mais
je calcule les probabilités pour chacun des nombre de pixels défectueux
on a 0 pixel défectueux avec une probabilité de P(X=0) = 0.7255
ou bien 1 pixel défectueux avec une probabilité de P(X=1) = 236/2000
ou bien 2 pixels défectueux avec une probabilité de P(X=2) = ...
ou bien 3 pixels défectueux avec une probabilité de P(X=3) = ...
etc
pour le programme Python :
afin de simuler le nombre d'écrans
return success
chercher l'erreur ...
on demande de renvoyer le nombre d'écrans
le nombre de fois où on a eu au moins 3 pixels défectueux
de plus
randint(0,6) renvoie un nombre entier aléatoire uniformément réparti entre 1 et 6
c'est à dire si on pose x = randint(0,6) (7 cas)
P(x=0) = 0.142857
P(x=1) = 0.142857
P(x=2) = 0.142857
...
tu avais ça dans ton tableau ?
est ce que la loi de probabilité déterminée la question d'avant est une loi uniforme ?
il faudra pour un programme de simulation que le tableau précédent soit sous une forme ou une autre dans le programme.
soit recopié tel quel
soit recalculé pour en tirer P(x>=3) d'après le tableau.
non dans mon tableau toutes les probabilités ne sont pas égales
ce n'est pas randint(1,6) renvoie un nombre entier aléatoire uniformément réparti entre 1 et 6 ?
randint(1,6) renvoie bien un nombre entier aléatoire uniformément réparti entre 1 et 6
randint(0,6) renvoie un nombre uniformément réparti entre 0 et 6
(faute de frappe)
et si tu t'en sers pour avoir le nombre de pixels en panne
et bien ce sera uniformément réparti comme j'ai dit
alors que ce ne doit pas être le cas, d'après la loi de probabilité que l'on veut simuler.
une façon de faire est de tirer un x = randint(1, 2000)
si x < 1451 alors on a un pixel en panne
si 1451 < x < 1451+236 alors on a 2 pixels en panne
si etc
pourquoi extrapoler à 10000 un tableau qui n'est défini que par 2000 échantillons ??
en d'autres termes travailler uniquement avec les nombres entiers du tableau. et pas des calculs de fréquence en décimales.
on a 1045 chances sur 10000 que le nombre de pixels défectueux soit supérieur ou égal à 3.
donc on demande de choisir au hasard un nombre compris entre 1 et 10000
s=0
s'il est1045
s=s+1
print s
est ce que ce programme convient?
ensuite je l'écris avec Python
merci
"une façon de faire est de tirer un x = randint(1, 2000)
si x < 1451 alors on a un pixel en panne
si 1451 < x < 1451+236 alors on a 2 pixels en panne"
ok je vais essayer comme ça
mais moi je répète que je m'en fiche de ton calcul de fréquence en décimal
c'est les nombres entiers d'origine dans le tableau de 2000 échantillons qui servent
tu as fait la somme des 209 échantillons sur les 2000 qui correspondent au colonnes 3, 4, 5, 6 du tableau
c'est ça les données : P(x>=3) = 209/2000
if randint(1,2000) <= 209
tu vas me dire que c'est pareil car 209/2000 = 1045/10000
le problème est de camoufler quelque chose de logique (209/2000) issu directement des données sous quelque chose de cryptique par rapport aux données
et de remplacer un tirage connu parmi 2000 par un tirage inconnu parmi 10000
J'essaye de faire fonctionner le programme de l'énoncé avant de le modifier et j'ai déjà ce message d'erreur:
indentation, indentation et encore indentation
c'est le leitmotiv de Python.
from math import *
import random
def echant(n):
success=0
for simu in range(n):
if random.randint(1,10)<=4 :
success=success+1
return success/n
from math import *
import random
def echant(n):
success=0
for simu in range(n):
if random.randint(1,10)<=4 :
success=success+1 # indentation incorrecte : pas dans le if
return success/n # identation incorrecte (un espace en trop)
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :