Probabilité sur la somme de variables aléatoires discrètes

Bonjour à tous,

Je viens pour poser une question de calcul de probabilité qui dépasse mes connaissances.

Je dispose de X lancés de dés pour faire une somme supérieure à Y, et j'aimerai calculer la probabilité d'y arriver.

En sachant que la distribution n'est pas homogène, la proba de faire 1 est différente de la proba de faire 6.

P(1) = 0.3

P(2) = 0.1

P(3) = ....

Cas concret:

je dispose d'un dé, et je souhaite faire 5 ou plus

P(5+) = P(5) + P(6)

(Je ne sais même pas l'écrire pour deux dés...)

Es-ce que quelqu'un à une idée de programme pour réaliser ce calcul? Une boucle étant selon moi totalement inenvisageable... (je dispose de plus de 25 lancés à réaliser)

Bonjour, c'est un dé pipé !! tu fais la somme des probabilités (normalement =1) puis tu divises tes probabilités >Y-1 /1 (ou par ta somme si pipé) et tu auras la probabilité de faire un > à Y-1:

ex: 0,2+0,1+0,3+0,1+0,2+0,1 proba de faire >4= 0.2+0.1/1=0.3=30% a+

Je pense qu'il faut commencer par recenser toutes les possibilités de tirage et les stocker. Supposons que tu fais 25 lancés.

Tu peux avoir par exemple : 10 fois le chiffre 1 ; 7 fois le chiffre 2 ; 3 fois le chiffre 3 ; 0 fois le chiffre 4 ; 1 fois le chiffre 5 ; et enfin 25-10-7-3-0-1=4 fois le chiffre 6. (on ne prend en compte l'ordre dans lequel on les obtient, parce que sinon tu te retrouves 6^25 25-plets, un nombre beaucoup trop grand même pour un ordi)

Voici comment on peut noter cette possibilité de tirage dans une liste à 6 éléments :

[10;7;3;0;1;4]

Une boucle qui calcule tous ces sextuplets fait au maximum 25^6=244 millions d'opérations (majoration très grossière). Je pense que c'est raisonnable par ordinateur.

Tu te retrouves avec au maximum 244 millions de sextuplets dont il faut chacun calculer la probabilité d'apparition.

Exemple simple:

[25;0;0;0;0;0] (ce qui veut dire que tu n'as tiré que des 1) (pas de bol )

P([25;0;0;0;0;0])=P(tirer 25 fois le 1)=p(1)^25

Plus technique :

P([24;1;0;0;0;0])= C(25,24)*P(1)^24*P(2)^(25-24)

ou C(n,k) est un coefficient binomial (c'est comme qu'on les appelle, hein ? moi je dis aussi "k parmi n"

Je pense que de proche en proche, on peut calculer la probabilité de [a,b,c,d,e,f]. Après y a peut-être des pros des maths ici qui te diront que c'est une loi 6-nomiale (ou un truc comme ça) et que ça calcule assez bien. C'est bourrin mais je pense que c'est techniquement faisable par ordinateur.

En espérant t'avoir éclairé

Bonsoir,

Il me semble qu'on brouille un peu la question... On est sur des probabilités simples !

Pour un jet de dé, la probabilité d'obtenir chaque nombre de 1 à 6 est de 1/6.

La probabilité d'obtenir 5 ou + sera donc de 2/6.

Avec 2 dés, la probabilité la probabilité d'obtenir 1 à 6 pour chacun est toujours 1/6.

Sur un jet des 2 dés, le nombre de combinaisons qu'on peut obtenir est de 36 (6*6), chaque valeur possible du 1er dé associée à chaque valeur possible du second. la probabilité d'obtenir une seule combinaison est de 1/36.

Avec ces dés on peut obtenir un total de 2 à 12.

La probabilité d'obtenir 2 ou 12 (une seule combinaison possible dans chaque cas) est de 1/36.

La probabilité d'obtenir 3 ou 11 est de 2/36 [(1,2),(2,1) ou (5,6),(6,5)]

La probabilité d'obtenir 4 ou 10 est de 3/36.

La probabilité d'obtenir 5 ou 9 est de 4/36.

La probabilité d'obtenir 6 ou 8 est de 5/36.

Et la probabilité d'obtenir 7 est de 6/36 [(1,6),(2,5),(3,4),(4,3),(5,2),(6,1)].

Ainsi la probabilité d'obtenir un total de 5 ou + va être de 30/36.

On peut en déduire que si l'on jette les dés 24 fois, on a la probabilité d'obtenir 20 fois un total de 5 ou + (24*30/36=20), ce qui ne veut pas dire qu'on les obtiendra.

Cordialement.

Bonjour à tous,

Un grand merci pour votre participation,

- Oui les dés sont pipés, en réalité c'est tourner une roue, et chaque segment à une dimension différente (d'où des pourcentages différents)

gomugomuno j'étais en train de développer ton raisonnement, avec toutes les fonctions nécessaires, mais je suis incapable d'écrire la fonction qui calcule toutes les combinaisons... Donc au final la seule chose qui me manque c'est une fonction qui calcule toutes les possibilités...

PS: Dans cette partie, il faudrait inclure un test qui sorte de la boucle (ex; Si on a moins de 12 * 6, il est impossible d'atteindre le résultat souhaité donc zapper tous les autres calculs.

MFerrand tu es dans l'erreur, chaque évènement a une probabilité différente, ce n'est pas un réel lancé de dés =) Néanmoins pour moi l'élément bloquant est vraiment la génération des possibilités.

Dans un lancer de dés, chaque possibilité est équiprobable !

Ou alors il s'agit d'autre chose.

J'avais bien précisé que chaque valeur avait une probabilité différente, en réalité c'est un tour de roue, c'était juste plus parlant X lancés de dés. Désolé d'avoir prêté confusion sur ce point.

Néanmoins le problème est sur le calcul des combinaisons.

En effet après qql recherches sur internet, j'ai réussi à trouver les formules de calcul de probabilités pour des variables aléatoires discrètes,

En effet à part faire 6 boucles allant de 0 à nbPossibilités....

Je ne sais ce que tu veux faire, mais dé ou roue ou n'importe quel accessoire produisant aléatoirement un nombre de valeurs fini, chaque valeur élémentaire est équiprobable, et le point de départ est la probabilité attachée à chacune, la somme faisant naturellement 1.

Lorsqu'on réitère, à chaque possibilité résultant du 1er tirage, le 2e offre autant de possibilités pour chaque possibilité du 1er (dans le cas d'un dé, 6 au 1er, 36 au 2e, 216 au 3e...).

Selon le résultat qu'on veut obtenir, sa probabilité est la somme des probabilités de toutes les combinaisons qui répondent à la condition mise.

Oui j'avais bien vu ce dé pipé!!

Faux! Les probas de chaques évenements sont différentes mais leur somme doit égaler 1

A+

Bonjour,

Donc au final la seule chose qui me manque c'est une fonction qui calcule toutes les possibilités...

Vu que ta question de départ est :

Je dispose de X lancés de dés pour faire une somme supérieure à Y

Tu pourrais dénombrer les décompositions de Y en sommes de nombres de 1 à 6 (+éléments des sommes limités par le nombre de lancés autorisés). Ca devrait limiter sérieusement, je pense pas que les Y que tu auras seront bien élevés devant 6^25 pour 25 dés par exemple. Tenir compte que 1+6+3 est différent de 3+6+1 etc.

A partir de là tu pourras avoir la probabilité de faire <=Y (et donc son complément >6) puisque tu peux calculer le nombres de tirages avec X dés.

Enfin je vois ça plutôt comme ça.

eric

Bonsoir eriic,

Je suis tout à fait d'accord avec tes propos, mais c'est la réalisation qui pèche!!

  • Je part de la configuration la plus favorable (que des 6), imaginons 22 * 6
  • Je retire 1 au 6, je dois placer sur cette valeur ailleurs
  • >> 21 * 6 + 1 * 5 puis 21 * 6 + 1 * 4 puis 21 * 6 + 1 * 3 etc....
  • Je retire 2 au 6 ,je dois placer sur cette valeur ailleurs
  • >> 20 * 6 + 2 * 5 puis 20 * 6 + 2 * 4 puis 20 * 6 + 1 * 5 + 1 * 4 etc.........................

Et je suis incapable d'écrire le code pour générer toutes ces possibilités!! J'appelle donc à l'aide ^^

Faux! Les probas de chaques évenements sont différentes mais leur somme doit égaler 1

Tu m'énumères les "évènements", avec la probabilité de chacun, ce qui permettra peut-être d'élucider pourquoi et comment un tirage assimilé à un jet de dé (dont l'affichage de chacune des 6 faces est un évènement par définition équiprobable, si le dé n'est pas pipé) produirait des évènements de probabilités différentes ! Et si tu ne peux lister les probabilités, inutile de poursuivre, il s'agit des données de départ dont découlera le résultat recherché...

Voila le code pour avoir les combinaisons dans le cas de 10 lancers. Pour 25 ce sera un peu plus long.

Option Base 1

Type sextuplet
a As Integer
b As Integer
c As Integer
d As Integer
e As Integer
f As Integer
End Type

Sub trouver_sextuplets()

Dim liste() As sextuplet

i = 0
'For k = 1 To 25
'For l = 1 To 25
'For m = 1 To 25
'For n = 1 To 25
'For o = 1 To 25
'For p = 1 To 25

For k = 0 To 10
For l = 0 To 10
For m = 0 To 10
For n = 0 To 10
For o = 0 To 10
For p = 0 To 10

If k + l + m + n + o + p = 10 Then
Dim sextup As sextuplet

With sextup
.a = k
.b = l
.c = m
.d = n
.e = o
.f = p
End With
i = i + 1
ReDim Preserve liste(i)

liste(i) = sextup
End If

Next
Next
Next
Next
Next
Next

End Sub

Je crois que je n'ai pas été compris.

Je te proposais de changer de méthode et de rechercher les sommes qui font ton total à atteindre <= à ton total à atteindre.

Il y en aura beaucoup moins que si tu dénombres tout les tirages possibles avec X dés.

Tu ne peux pas raisonnablement penser que tu puisses explorer les 6^25 (=2.84303E+19) tirages de 25 dés avec excel... Même à 10000 à la seconde (pas ton PC donc) il te faudrait plusieurs siècles

Par exemple combien de façon de faire <=4 avec 3 lancés maxi ?

1 tirage :

1, 2, 3, 4

2 tirages :

1+1

1+2, 2+1

1+3, 3+1

2+2

3 tirages :

2+1+1, 1+2+1, 1+1+2

Il n'y en a que 13/(6+6^2+6^3) soit 13/238, c'est à dire beaucoup moins que le nombre total.

Tu calcules tes probabilités uniquement sur ceux-ci pour avoir celle de faire <=4, les autres c'est ce que tu cherches : probabilité de faire >4.

C'est juste une idée à explorer, il y a peut-être une faille dans mon raisonnement les proba n'étant pas mon domaine de prédilection.

eric

Je te proposais de changer de méthode et de rechercher les sommes qui font ton total à atteindre <= à ton total à atteindre.

Il y en aura beaucoup moins que si tu dénombres tout les tirages possibles avec X dés.

Tu ne peux pas raisonnablement penser que tu puisses explorer les 6^25 (=2.84303E+19) tirages de 25 dés avec excel... Même à 10000 à la seconde (pas ton PC donc) il te faudrait plusieurs siècles

Mais si tu as été compris. Mon code fait 25^6 opérations et non pas 6^25.

Le code qui fait 6^25, c'est celui qui conserve tous les tirages possibles en gardant l'ordre du tirage

En d'autres termes,

dans le code qui fait 6^25 op2rations (pas raisonnable pour un ordi comme tu le dis si bien)

[1,1,1,1,1...1,2] est un tirage différent de [2,1...,1,1,1] (le 1 est répété 24 fois)

Dans ce que je propose, les deux tirages ci-dessus seront notés de la même façon

[24,1,0,0,0,0]

On revient donc, à comme j'ai dit dans mon premier post (sûrement pas clair, désolé), calculer tous les tirages possibles en se fichant de l'ordre dans lequel on a obtenu les résultats.

Pour le calcul avec la loi multinomiale derrière c'est bien les sextuplets comme j'ai fait qui comptent.

Et ces sextuplets yen a pas plus que 25^6=244 millions

Bonjour,

Je répondais à d3d9x qui veut générer toutes les combinaisons sur X tirages en fait.

Ceci dit je me demande comment tu arrives à ne pas tenir compte que 1-4 par exemple soit 2 tirages et en tirer des stats malgré tout. Mais bon, comme je l'ai dit, les stats ne sont pas ma tasse de thé.

eric

Désolé je vais rerecadrer. gomugomuno a parfaitement compris ma demande, je ne cherche pas à générer toutes les sorties possibles, juste à générer toutes les combinaisons qui sont possibles. A partir de ces combinaisons, effectuer mon test (somme des valeurs >= à la somme recherchée), et si la condition est remplie sommer les probabilités.

D'un point de vu statistique, j'ai déjà tous les éléments pour résoudre mon problème, la seule chose qui me manque c'est le code de génération des combinaisons.

Concernant ta remarque eriic, elle est pertinente si la probabilité de perdre est inférieure à la probabilité de gagner. Il faudrait donc une méthode pour estimer rapidement quelle méthode utiliser, et ainsi générer les combinaisons donnant le bon nombre de lancés, avec une condition de sortie de boucle. (Si la 25.000ème combinaison est la dernière qui fonctionne, pas besoin de générer les suivantes)

PS: Avant de faire d'autres propositions, laissez moi le temps de tester le code de gomugomuno qui répond en partie à mes besoins (manque juste une condition de sortie rapide des boucles for).

Ok, pas de soucis.

Ca ne m'empêche pas continuer de penser que de ne pas tenir compte des permutations d'un tirage est une erreur mais bon...

Pour faire 3 avec 2 tirages il y a 2 possibilités 1+2 et 2+1, pas une seule. Ce qui double sa probabilité.

Le sujet est maintenant résolu.

La solution mathématique est l'utilisation de CONVOLUTIONS.

En gros , cela permet de calculer la probabilité de la somme de 2 variables aléatoires. J'ai trouvé un code VBA sur internet permettant de calculer la convolution pour 2 variables aléatoires, et grâce à une boucle j'en suis arrivé à mes 22 lancés (et ce de manière INSTANTANEE)

Ci-dessous le lien suivi pour réaliser ce miracle

http://www.mrexcel.com/forum/excel-questions/691200-discrete-convolutions-visual-basic-applications.html

Ci-joint le fichier final de résultat

PS: Oui eriic je suis totalement d'accord avec tes propos, les propos de chacuns sont exactes mais n'aidaient pas forcément la résolution

30roue.xlsm (56.38 Ko)

Ok, j'éviterai de te déranger à l'avenir.

eric

Rechercher des sujets similaires à "probabilite somme variables aleatoires discretes"