Inscription / Connexion Nouveau Sujet
Niveau première
Partager :

Python nombre aléatoire

Posté par
Vale7401
28-02-21 à 19:13

Bonjour
J'ai tapé ce programme mais il ne s'exécute pas...

Python nombre aléatoire

Posté par
Vale7401
re : Python nombre aléatoire 28-02-21 à 19:18

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

Posté par
Zormuche
re : Python nombre aléatoire 28-02-21 à 19:26

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é

Posté par
mathafou Moderateur
re : Python nombre aléatoire 28-02-21 à 19:37

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)

Posté par
Vale7401
re : Python nombre aléatoire 28-02-21 à 19:39

Ok merci
que signifie la ligne 7
if random.ranint(1,10)<=4

Posté par
Zormuche
re : Python nombre aléatoire 28-02-21 à 19:53

mathafou en effet, logique

Posté par
mathafou Moderateur
re : Python nombre aléatoire 28-02-21 à 19:56

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

Posté par
Vale7401
re : Python nombre aléatoire 28-02-21 à 20:12

j'ai ce message d'erreur :
name "echant" isn't defined

Posté par
mathafou Moderateur
re : Python nombre aléatoire 28-02-21 à 20:27

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. Python nombre aléatoire
avec d'autres Python voir quel est le bouton qui lance le module.

Posté par
Vale7401
re : Python nombre aléatoire 28-02-21 à 20:41

ok merci

Posté par
flight
re : Python nombre aléatoire 28-02-21 à 20:53

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

Posté par
Vale7401
re : Python nombre aléatoire 28-02-21 à 20:55

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

Posté par
Vale7401
re : Python nombre aléatoire 01-03-21 à 08:20

Pouvez-vous m'aider pour la suite ?

Posté par
mathafou Moderateur
re : Python nombre aléatoire 01-03-21 à 10:53

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.

Posté par
Vale7401
re : Python nombre aléatoire 02-03-21 à 18:13

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 ?

Posté par
mathafou Moderateur
re : Python nombre aléatoire 02-03-21 à 18:23

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

Posté par
Vale7401
re : Python nombre aléatoire 02-03-21 à 18:28

j'ai calculé P(X3)=0,1045 mais je ne sais pas quoi en faire...

Posté par
Vale7401
re : Python nombre aléatoire 02-03-21 à 18:42

cela équivaut à randint(1,10000)1045?

Posté par
mathafou Moderateur
re : Python nombre aléatoire 02-03-21 à 18:49

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.

Posté par
Vale7401
re : Python nombre aléatoire 02-03-21 à 18:53

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

Posté par
Vale7401
re : Python nombre aléatoire 02-03-21 à 18:54

parce que 0,1045=1045/10000

messages croisés

Posté par
Vale7401
re : Python nombre aléatoire 02-03-21 à 18:56

"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

Posté par
mathafou Moderateur
re : Python nombre aléatoire 02-03-21 à 19:08

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

Posté par
Vale7401
re : Python nombre aléatoire 02-03-21 à 21:05

J'essaye de faire fonctionner le programme de l'énoncé avant de le modifier et j'ai déjà ce message d'erreur:

Python nombre aléatoire

Python nombre aléatoire

Posté par
mathafou Moderateur
re : Python nombre aléatoire 02-03-21 à 22:16

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


est OK

"presque pareil" mais avec des indentations fausses :

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)

Posté par
Vale7401
re : Python nombre aléatoire 05-03-21 à 10:09

merci je vais revoir tout ça



Vous devez être membre accéder à ce service...

Pas encore inscrit ?

1 compte par personne, multi-compte interdit !

Ou identifiez-vous :


Rester sur la page

Inscription gratuite

Fiches en rapport

parmi 1674 fiches de maths

Désolé, votre version d'Internet Explorer est plus que périmée ! Merci de le mettre à jour ou de télécharger Firefox ou Google Chrome pour utiliser le site. Votre ordinateur vous remerciera !