Forum

Catégorie : Programmes
Forum : Aide à la programmation
Vues : 715
Réponses : 12
Type : discussion
Etat : réponses autorisées

Programme proba

luffy6 le 15/04/2012 à 15:16
salut a tous ! je dois faire un programme qui consiste a afficher le nombre total d'invité a un anniversaire .La probabilité qu'une personne soit invité est de 0.3
Il y a 35 personnes pouvant etre inviter et ils seront numérotés de 1 a 35
Les résultat de la simulation seront une liste de 35 chiffres 0 ou 1 (1 pour invité et 0 pour non invité). On affichera le nombre total d'invité.

pouvez-vous m'aider a faire ce programme svp !
merci a toute réponse winkle.gif
sandro le 15/04/2012 à 15:23
Code
seq(rand[inférieur ou égal]0.3,A,1,35
Pause Ans
sum(Ans


Après, si tu préffère, je peux faire quelquechose de plus lourd mais avec des instructions plus usuelles.

Sandro
luffy6 le 15/04/2012 à 15:25
Oui je preferais quelque chose de plus lourd si possible !
merci
Sangohan38 le 15/04/2012 à 15:34
Je trouve sa assez simple comme programme ... A-tu cherché par toi même avant de demander car ce serai plus profitable pour toi.

M'enfin, voici le code:

Code
ClrList L1
35->dim(L1
For(A,1,35
int(rand10+1
If Ans<4
1->L1(A
End
ClrHome
Disp "NOMBRE D'INVITES:",Sum(L1


Sangohan38
sandro le 15/04/2012 à 15:37
Code
{0} -> L1
35 -> dim(L1)
For(A,1,35)
If rand[inférieur ou égal]0.3
Then
1 -> L1(A)
End
sum(L1 -> S
Disp S,L1


L1 est la liste qui s'optient en faisant [2nde][1]

C'est miex comme ça ou ça utilise encore trop d'opérations compliquées (dans ce cas, il faudra supprimer la liste et faire sans)
luffy6 le 15/04/2012 à 15:50
Oui j'ai cherche ! C'est la ligne 35 -> dim(L1) que je ne savais pas faire !
Merci beaucoup Sandro et Sangohan
sandro le 15/04/2012 à 16:00
tu peut aussi faire {0,0,0,0, ... ,0} -> L1 (avec un total de 35 zéros) à la place des 2 premières lignes, ça revient au même.

Sandro
linkakro le 15/04/2012 à 17:38
Ce problème est identique à un autre sujet récent
(histoire de puiser un maximum d'idées)

remarque : le "inférieur ou égal" versus "inférieur" ne change pas grand chose car la probabilité de rand=0.3 tend vers 0.

Le premier de sandro dans ce sujet fonctionne, mais j'ai bien envie de proposer deux autres solutions équivalentes :
Code
 // ceci

randBin(1,.3,35
Pause Ans
sum(Ans

 // ou bien cela

rand(35)<.3
Pause Ans
sum(Ans

 // je rappelle celui de SANDRO au point où ( ) j'en suis

seq(rand<0.3,A,1,35
Pause Ans
sum(Ans

Par contre le second code de sandro dans ce sujet est foireux à cause des boucles.
Soit le Then est en trop soit il manque un End. ahh.gif

Si on veut rester détaillé mais sans fioriture, voici quelque chose fortement inspiré de sandro.
Code
35->dim(L1
For(B,1,35
rand<0.3->L1(B
End
Pause L1
sum(L1


Je souris de voir le tic de sangohan38 avec la ligne "int(rand*10+1)" qui est propre à la TI82_basique. Les jeunots comme moi n'ont pas cette habitude à cause de la fonction "randInt" de ti82stat.
Que de nostalgie. winkle.gif

EDIT : j'ai corrigé quelques erreurs que j'ai commises en effectuant des copier/coller moodforlove.gif
Sangohan38 le 15/04/2012 à 19:06
Je suis pas d'accord avec ton 9/20 dans le second code car sa fait une proba de 0.45 au lieu des 0.3 requis.
Et puis tu dimensionne la liste 2 au lieu de la 1 au départ.

Et tu remarquera que mon autre tic c'est décrire en anglais majoritairement et de ne jamais utiliser de chaînes. Que veux-tu je pense encore aux rares personnes ayant une 82 basique dans leurs sacs.

Sangohan38
linkakro le 15/04/2012 à 19:18
J'ai fais trop de copier/coller. Désolé. moodforlove.gif
Je corrige.
luffy6 le 15/04/2012 à 21:53
merci a vous tous ! j'ai finalement pris celui de linkakro qui marche bien mais je ne vois pas tous les 0 et 1 j'en vois quelques un puis trois points !
ce n'est qu'un detail mais savais vous comment faire pour voir tous les 0 et 1 ?
sandro le 15/04/2012 à 22:07
bah quand c'est en pause, tu défile avec gauche et droite.
luffy6 le 15/04/2012 à 22:11
ok merci winkle.gif