CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Modéliser la probabilité de 4 piles consécutifs en Python

Canito_91
Canito_91
Niveau 10
25 juin 2019 à 17:03:09

Dans un lancée de piles ou face à 100 lancers ?

On a

L= randint(0,2,100)

Mais je vois pas quel genre de programme faire

Canito_91
Canito_91
Niveau 10
25 juin 2019 à 17:15:12

C'est qu'il y ait au moins un "4 piles consecutifs" bien sur

Reynoooor
Reynoooor
Niveau 9
25 juin 2019 à 19:41:35

Tu fais un programme qui parcourt ta liste et compte le nbr de 4 piles consécutifs ?

Canito_91
Canito_91
Niveau 10
25 juin 2019 à 22:54:34

Le 25 juin 2019 à 19:41:35 Reynoooor a écrit :
Tu fais un programme qui parcourt ta liste et compte le nbr de 4 piles consécutifs ?

genre

a=0
for i in range (L) :
if L[i]=1
a=a+1
if L[i]=0
a=0
if a=4
return 1
else
return 0

?

Canito_91
Canito_91
Niveau 10
25 juin 2019 à 23:04:39

J'ai fait le programme mais le Python peine à le faire tourner

def consecutif():
a=0
L=randint(0,2,100)
for i in range(len(L)):
while a!=4:
if L[i]==1:
a=a+1
else:
a=0
if a==4:
return 1
else:
return 0

Canito_91
Canito_91
Niveau 10
25 juin 2019 à 23:08:03

Enfin du coup c'est plutot ça

def consecutif():
a=0
L=randint(0,2,100)
for i in range(len(L)):
while a!=4:
if L[i]==1:
a=a+1
else:
a=0
if a==4:
return 1
else:
return 0

nbre_xp=20000
fav=0
for _ in range(nbre_xp):
if consecutif()==1:
fav=fav+1

print("La probabilité d'obtenir 4 piles de suite est de ",fav/nbre_xp)

Canito_91
Canito_91
Niveau 10
25 juin 2019 à 23:08:35

Mais Python arrive pas à le faire tourner,aucune erreur mais ça charge trop

PTSI-PT
PTSI-PT
Niveau 32
26 juin 2019 à 02:27:54

J'ai même pas lu mais si python n'arrive pas à faire des opérations aussi simples c'est que ta boucle ne termine jamais, vérifie ta condition

BaikenShishido
BaikenShishido
Niveau 10
26 juin 2019 à 10:27:40

Salut,
je découvre seulement le Python, mais on a le droit de mettre 3 arguments dans randint() ?
Je n'ai rien trouvé sur Internet et ça me met un message d'erreur sur un éditeur en ligne.
De plus, tu ne peux obtenir que Pile (1) ou Face (0), pourquoi mettre des entiers entre 0 et 2 ?
Du coup pour générer la liste, je suis passé par une boucle :

L=[]
for i in range(100) :
L.append(random.randint(0,1))

Ce qui tourne en boucle dans ton programme, c'est ton
while a!=4:
if L[i]==1:
a=a+1
else:
a=0
À l'intérieur du while, le i n'évolue pas, donc si jamais la case i contient face (0), a est remis à 0, et comme ce n'est pas 4, on teste à nouveau, mais comme ça contient 0, a est remis à 0 etc.

Une double boucle avec des break pourrait faire l'affaire :
for i in range(97) : (97 car la dernière série consécutive possible est 97 98 99 100)
for j in range(4):
if L[i+j]==1:

Et tu casses la boucle dans le sinon pour pas perdre de temps.
Idem pour la boucle extérieure, tu la casses dès que tu as rencontré 4 pile consécutifs. Inutile d'aller voir ce qu'il se passe en 90 91 92 93 si ça a marché en 2 3 4 5.

Message édité le 26 juin 2019 à 10:29:05 par BaikenShishido
Canito_91
Canito_91
Niveau 10
26 juin 2019 à 15:36:53

Le 26 juin 2019 à 10:27:40 BaikenShishido a écrit :
Salut,
je découvre seulement le Python, mais on a le droit de mettre 3 arguments dans randint() ?
Je n'ai rien trouvé sur Internet et ça me met un message d'erreur sur un éditeur en ligne.
De plus, tu ne peux obtenir que Pile (1) ou Face (0), pourquoi mettre des entiers entre 0 et 2 ?
Du coup pour générer la liste, je suis passé par une boucle :

L=[]
for i in range(100) :
L.append(random.randint(0,1))

Ce qui tourne en boucle dans ton programme, c'est ton
while a!=4:
if L[i]==1:
a=a+1
else:
a=0
À l'intérieur du while, le i n'évolue pas, donc si jamais la case i contient face (0), a est remis à 0, et comme ce n'est pas 4, on teste à nouveau, mais comme ça contient 0, a est remis à 0 etc.

Une double boucle avec des break pourrait faire l'affaire :
for i in range(97) : (97 car la dernière série consécutive possible est 97 98 99 100)
for j in range(4):
if L[i+j]==1:

Et tu casses la boucle dans le sinon pour pas perdre de temps.
Idem pour la boucle extérieure, tu la casses dès que tu as rencontré 4 pile consécutifs. Inutile d'aller voir ce qu'il se passe en 90 91 92 93 si ça a marché en 2 3 4 5.

Hum ça a l'air bizarre je testerai ce soir quand meme

Canito_91
Canito_91
Niveau 10
26 juin 2019 à 16:02:37

Sinon j'ai ça qui a l'air plus simple

def consecutif():
L=randint(0,2,100)
a=0
for i in range(len(L)):
if L[i]==1:
a=a+1
if a==4:
return 1
if L[i]==0:
a=0

Et que Python fait tourner

Choucador
Choucador
Niveau 10
26 juin 2019 à 16:47:25
Utilisez
  la balise
    code,
      l'indentation
        c'est important!
Sous forums
  • Histoire
  • Environnement & Nature
  • Politique
  • Cours et Devoirs
  • Philosophie
  • Métiers & Orientation