Probabilité nPr, nCr [Résolu]

cs_algori 870 Messages postés dimanche 26 décembre 2004Date d'inscription 26 février 2008 Dernière intervention - 18 mars 2005 à 15:29 - Dernière réponse : cs_algori 870 Messages postés dimanche 26 décembre 2004Date d'inscription 26 février 2008 Dernière intervention
- 19 mars 2005 à 09:19
Bonjour,
Voilà ! J'ai un problème.
Je suis en train de faire une calculatrice en javascript et j'ai un problème pour l'emploi d'une fonction. J'aimerai utiliser une fonction nPr pour calculer le nombre de permutation en probabilité. L'algorithme étant le suivant : n! / ((n-p)!) pour nPr et :
n! / (p!(n-p)!) pour nCr. --> ! représente la factorielle du nombre.
J'ai fait une première fonction qui détermine n! et une seconde déterminant p!.
Si vous savez, comment je pourrais faire pour faire (n-p)! ET le plus important, comment je pourrais réunir ces trois fonctions (perso, j'ai pensé à un truc du genre :
y = fac() / facnp() pour nPr mais ça marche pas ?!?
Merci pour vos futures réponses et peut-être solutions (il faut l'avouer, mon problème n'est pas simple).

@++
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
GhislainLavoie 289 Messages postés vendredi 11 mars 2005Date d'inscription 3 avril 2008 Dernière intervention - 18 mars 2005 à 21:34
3
Merci
Salut!

Après avoir fait une fonction qui calcule la factorielle, il suffisait d'utiliser la multiplication et la division pour arriver a tes fin...

Exemple :


<script type= "text/javascript">
// factorielle

function fact
(n
)
{

return
(n
==
0)?
1:(n
* fact
(n
-
1));

}
// combinaison

function nCr
(p
,n
)
{

return fact
(n
)/(fact
(p
)*fact
(n
-p
));

}
// permutation

function nPr
(p
,n
)
{

return fact
(n
)/fact
(n
-p
);

}

alert
(fact
(6)); // # factorielle de 6
alert
(nCr
(6,49)); //# combinaison loto
alert
(nPr
(6,49));// # permutation loto

</script>

A+, Ghislain

Merci GhislainLavoie 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de GhislainLavoie
Meilleure réponse
GhislainLavoie 289 Messages postés vendredi 11 mars 2005Date d'inscription 3 avril 2008 Dernière intervention - 18 mars 2005 à 23:42
3
Merci
Salut!

Je n'ai pas mis de validation...

C'est certain que si tu utilisent les fonctions directement sur ta calculatrice sans validation, tu peut t'y retrouver avec des résultats bizarre.

La valeur de p doit toujours être plus petite ou égal que la valeur de n car on ne peut pas trouver de permutation ou de combinaison de 22 chiffres avec seulement 21 chiffres. Puisque j'utilises une fonction factorielle récursive, elle n'aboutit jamais et génère un stack overflow.

Il faut don faire une validation et retourner zero ou Erreur.

A+, Ghislain

Merci GhislainLavoie 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 83 internautes ce mois-ci

Commenter la réponse de GhislainLavoie
cs_algori 870 Messages postés dimanche 26 décembre 2004Date d'inscription 26 février 2008 Dernière intervention - 18 mars 2005 à 22:16
0
Merci
Merci beaucoup ! Ca marche impec dans ma calculatrice javascript.


@++
Commenter la réponse de cs_algori
cs_algori 870 Messages postés dimanche 26 décembre 2004Date d'inscription 26 février 2008 Dernière intervention - 18 mars 2005 à 23:12
0
Merci
C'est vraiment bizarre ! Ca marche pas pour toutes les valeurs...???
Essaie ça :
<script type= "text/javascript">
// factorielle

function fact
(
n
)

{

return
(
n
==

0
)
?
1
:(
n *
fact
(
n
-

1
))
;
}

// combinaison

function nCr
(
p
,
n
)

{

return fact
(
n
)/(
fact
(
p
)*
fact
(
n
-
p
))
;
}

alert(
fact
(
6
))
; // # factorielle de 6
alert(
nCr
(22
,21
))
; //# combinaison loto

</script>
Y'a quelque chose qui a du m'échapper..........
@++
Commenter la réponse de cs_algori
cs_algori 870 Messages postés dimanche 26 décembre 2004Date d'inscription 26 février 2008 Dernière intervention - 19 mars 2005 à 09:19
0
Merci
Ah d'accord... Merci beaucoup.
@++
Commenter la réponse de cs_algori

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.