Probabilités (chances de succès différentes)

Olympiades mathématiques, énigmes et défis
blitz37
Membre Naturel
Messages: 14
Enregistré le: 08 Nov 2011, 16:44

Probabilités (chances de succès différentes)

par blitz37 » 08 Nov 2011, 17:05

Bonjour,

J'aurais besoin de votre aide pour un petit problème de proba.

Je fais n tests indépendants ayant une chance de succès différente les uns des autres. Comment je fais pour calculer la probabilité que X tests réussissent ? (X inférieur ou égal à n)

Exemple :
Le test n°1 a 22% de chance de succès
Le test n°2 a 98% de chance de succès
Le test n°3 a 45% de chance de succès
Le test n°4 a 65% de chance de succès
Le test n°5 a 32% de chance de succès
Quelle est la probabilité que 2 tests réussissent ?

Une solution longue et répétitive me convient puisque je souhaite intégrer ce calcul dans un programme informatique (et les ordinateur ça aime bien les calculs de bourrins et répétitifs).
Si je peux avoir la solution avec une simple équation, c'est toujours mieux. Si c'est le cas, merci d'indiquer le nom de la loi mathématique utilisée (un peu de culture mathématique ne fait pas de mal :lol3: )

Désolé pour ceux qui trouvent mon énoncé peu rigoureux, je fais des études d'informatique et non de mathématiques (chacun sa spécialité :zen: )

Merci d'avance pour vos réponses.

PS : Si vous avez besoin d'un complément d'information, n'hésitez pas.



Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 08 Nov 2011, 17:24

salut,

en notant respectivement p_1,...,p_n la proba de tests independants X_1,...,X_n (qui prennent les valeurs 0 ou 1 selon lechec ou la reussite)

il suffit de prendre toutes les combinaison de vecteurs de taille n (dont lelement i correspond au succes de X_i) tels que la somme fait k si on veut avoir k tests qui reussissent.

On peut construire trivialement une recursive de la sorte
Code: Tout sélectionner
set g_S //ensemble de vecteur solution
g_k //nombre de tests a reussir
searchAllSolutions(int nbRunnedTests){
   s = Solution(nbRunnedTests) //voir ca comme un vecteur de taille nbRunnedTests
   searchSolutions(s, 0, s.size()-1)
   searchSolutions(s, 1, s.size()-1)
}
searchSolutions(Solution s, int val, int i){
   s[i]=val
   //la solution est construite
   if (i==0)
     //si on a exactement k tests reussis, elle est valide
     if(sum(s) == g_k){
      g_S.insert(s)
     }
     return
   fi
   searchSolutions(s, 0, i-1)
   searchSolutions(s, 1, i-1)
}




edit: jai oublie lexploitation des donnees, mais ca va viteuf.
pour une solution s, la proba de lobtenir est
avec p_i la proba que X_i reussisse
et il suffit d'iterer sur g_s pour avoir la proba d'obtenir k success :
la vie est une fête :)

blitz37
Membre Naturel
Messages: 14
Enregistré le: 08 Nov 2011, 16:44

par blitz37 » 08 Nov 2011, 17:40

Merci d'avoir répondu si rapidement. Je vais étudier ta solution, il faut que je comprenne mnt moi :)

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 08 Nov 2011, 17:52

tu as lautre variante de bourrin.
Tu prends un grand nombre N et tu simules.
Code: Tout sélectionner

win=0
pour i=1 a N
 //simule les tests
 s; //notre solution simulee
 pour j=1 a n
  //on tire au pif et si la proba est respectee, s[]
  if (rand(1) < p[i])
   s[j] = 1
  fi
 finpour
 if sum(s) == k //si la solution simulee respecte la condition k tests ok
  win++ //on compte un success
 fi
finpour
proba = win/N
la vie est une fête :)

 

Retourner vers ⚔ Défis et énigmes

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 10 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite