angelV Posté(e) le 10 avril 2020 Signaler Share Posté(e) le 10 avril 2020 Bonjour à tous, c'est encore moi, car oui j'ai quelques difficultés en Informatique. J'ai reçu un nouvel exo par mon professeur comprenant 2 parties. J'ai fais la première partie (A), assez simple mais la deuxième (B) est une autre histoire... Pourrais-je avoir de l'aide pour le terminer ? Voici ce que j'ai fais pour l'instant sur python : import random def test_meme_anniversaire(): liste=[random.randint(1,336) for i in range (1,50)] print(sorted(liste)) for element in liste: if liste.count(element)>1: return 1 else: return 0 print(test_meme_anniversaire()) Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 10 avril 2020 E-Bahut Signaler Share Posté(e) le 10 avril 2020 Bonjour, Pour le moment, j'en suis également resté au A. Après différents tests, pour moi, ton script comporte une erreur ici for element in liste: if liste.count(element)>1: return 1 else: return 0 En effet, sauf si le premier élément est compté deux fois, la condition if n'est pas vérifiée, on "return" 0, le comptage s’arrêtant là. A mon avis, il faut écrire import random def test_meme_anniversaire(NOMBRE_PERSONNES): L=[random.randint(1,336) for i in range(1,NOMBRE_PERSONNES+1)] le tri est inutile vu le mode de comptage for element in L: if L.count(element)>1: return 1 on sort du test dès la première occurrence return 0 uniquement si aucune occurrence n'est trouvée n=int(input('Nombre de personnes : ')) print(test_meme_anniversaire(n)) Je regarde la suite, mais pas tout de suite. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 10 avril 2020 E-Bahut Signaler Share Posté(e) le 10 avril 2020 J'ai regardé la suite, ci-joint deux scripts. Pour l'affichage de la fréquence import random def test_meme_anniversaire(NOMBRE_PERSONNES): L=[random.randint(1,366) for i in range(1,NOMBRE_PERSONNES+1)] for element in L: if L.count(element)>1: return 1 return 0 def evolution_frequence(NOMBRE_SIMULATIONS): f=0 for n in range (1,NOMBRE_SIMULATIONS+1): if test_meme_anniversaire(30)==1: f=f+1 f=f/NOMBRE_SIMULATIONS return f print(evolution_frequence(100000)) Pour le graphique import random import matplotlib.pyplot as plt def test_meme_anniversaire(NOMBRE_PERSONNES): L=[random.randint(1,366) for i in range(1,NOMBRE_PERSONNES+1)] for element in L: if L.count(element)>1: return 1 return 0 def evolution_frequence(NOMBRE_SIMULATIONS): for i in range (1,NOMBRE_SIMULATIONS+1): f=0 for j in range (1,NOMBRE_SIMULATIONS+1): if test_meme_anniversaire(30)==1: f=f+1 f=f/NOMBRE_SIMULATIONS plt.plot(i,f,'+',color='red') evolution_frequence(1000) plt.show() A regarder et à tester. N.B. : Pour la représentation graphique, je suis parti du principe qu'il fallait avoir autant de points que de simulations, mais ça rallonge énormément le temps de calcul. Peut-être qu'il faut dissocier les deux et ne prendre par exemple que 100 ou 1000 points. Dans ce cas, il suffit de changer la ligne for i in range (1,NOMBRE_SIMULATIONS+1): en for i in range (1,101): ou for i in range (1,1001): Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
angelV Posté(e) le 10 avril 2020 Auteur Signaler Share Posté(e) le 10 avril 2020 Alors, je suis entrain de retravailler ce que vous m'avez envoyé, je confirme mon erreur. Merci encore pour votre aide. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
E-Bahut julesx Posté(e) le 10 avril 2020 E-Bahut Signaler Share Posté(e) le 10 avril 2020 OK, bonne continuation. P.S. : Si nécessaire, n'hésite pas de revenir sur ce post. Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.