Loi Binomial [Résolu]

Messages postés
4
Date d'inscription
lundi 20 avril 2015
Dernière intervention
5 décembre 2015
-
Bonjour,
j'ai essayé de faire ce programme, mais j'ai rencontré un problème c'est le résultat est tjrs NaN
package tp2;

public class Binomial {

 public static double factoriel(double x){
  double f=0;
  if(x==0)
   f=1;
  else 
   for(int i=1;i<=x;i++)
   f=f*i;
  return f;
 }
 
 public static double compute(double n,double k){
  double c;
   c=factoriel(n)/(factoriel(k)*factoriel(n-k)); 
  return c ;
 }
 
 public static double generate(int n, float p,double t){
  double somme=0;
  for(int i=0;i<=t;i++)
   somme+=compute(n,i)*Math.pow(p,i)*Math.pow(p-1,n-i);
  return somme;
 }
 
 public static void main(String args[]){
  double binomial;
  binomial= generate(5,(float)0.4,8);
  System.out.println("Bonimial :"+ binomial);
 }
 
}


EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
Messages postés
15862
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
13 décembre 2018
1
Merci
Bonjour,

Lorsque tu fais generate(5, (float) 0.4, 8), tu commences les calculs par un somme += compute(n, i) où n=5, i=0, sachant que compute(5, 0) va faire factoriel(5) / (factoriel(0)*factoriel(5)).

Or dans tes calculs factoriel(0)=1 et factoriel(5) = 0, donc compute(5,0) va faire une division 0/(1*0) c'est à dire 0/0...
Le résultat d'une telle division est inconnue, ce n'est pas un nombre d'où la valeur NaN (Not a Number).

Cette valeur NaN va se propager d'un calcul au suivant (toutes les opérations avec NaN auront pour résultat NaN), d'où ton résultat final.

Sinon, quand on regarde ton code il y a des absurdités assez évidentes, déjà sur le type des variables, une factorielle d'un double n'a pas de sens, le paramètre et le résultat est forcément entier...

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 104 internautes ce mois-ci

Commenter la réponse de KX
Messages postés
4
Date d'inscription
lundi 20 avril 2015
Dernière intervention
5 décembre 2015
0
Merci
mercii bieen c'est résolu ;)
Commenter la réponse de nazorayzer

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.