Loi Binomial [Résolu]

Signaler
Messages postés
4
Date d'inscription
lundi 20 avril 2015
Statut
Membre
Dernière intervention
5 décembre 2015
-
Messages postés
4
Date d'inscription
lundi 20 avril 2015
Statut
Membre
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.
A voir également:

2 réponses

Messages postés
16361
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
11 juin 2021
122
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...
Messages postés
4
Date d'inscription
lundi 20 avril 2015
Statut
Membre
Dernière intervention
5 décembre 2015

mercii bieen c'est résolu ;)