Wahrscheinlichkeiten bei Lotto ähnlichen Tip-Spielen

Formel um Wahrscheinlichkeiten(1:blabla) bei Tip-Spielen auszurechnen:

W = Wahrscheinlichkeit
Y = Gesamte Menge
X = Anzahl Tips
! = Fakultät(Falls es jemand nicht weiß...)

***********y!
W(y,x) = -----------
********x! * (y-x)!

heißt also im Falle Lotto:

**********49!
W(y,x) = -----------
*******6! * (49-6)!

Das Problem bei der Sache ist das ich ein Programm(c++) schreiben will das beliebig(relativ) hohe Variablen annehmen kann,
aber wenn sagen wir die gesamtmenge 1000 und die zu ziehenden zahlen 999 sind, müßte ich alleine im Zähler
die Fakultät von 1000 berechnen. Die Zahl wäre aber so groß das sie in keinen Datentyp passen würde...
Ich komm echt auf keinen "Nenner" mit dem Scheiß! :D
Irgendeine Idee wie man die Formel umstellen kann, oder vielleicht ein ganz anderer Lösungsansatz? X(
 
Ich fürchte um die Großen Zahlen wirst du nicht rumkommen. Aber es gibt Bibiliotheken mit denen du mit solchen Zahlen umgehen kannst. Eine Möglichkeit wäre die GNU Multiple Precision Arithmetic Library. Finden kannst du sie hier
 
Nach einigen Stunden Kopfzerbrechen habe ich die Hoffnung auch schon fast aufgegeben... :(
Naja, werd mir die Seite mal anschauen und dann einen workaround basteln...
Danke!
PS: Wenn Jemandem doch noch eine Lösung einfallen sollte, soll er sie ruhig posten!
 
@guybush

lottowarscheinlichkeit:

heißt also im Falle Lotto:

**********49!
W(y,x) = -----------
******** (49-6)!

6 aus 49
+
5 aus 48
+
4 aus 47
.
.
.
die 6! kannst du streichen

Ziehen ohne Zurücklegen mit Beachtung der Reihenfolge

Das k-stufige Experiment verändert in jeder Stufe die Elementarwahrscheinlichkeit für das Ziehen einer bestimmten Kugel, denn die Kugelgesamtheit reduziert sich bei jeder Stufe um eine Kugel.
 
doch, die reihenfolge ist egal. es handelt sich hierbei wie evt. schon erkannt um eine kombination ohne wiederholung und ohne berücksichtigung der reihenfolge. zum problem, fakultäten kann man kürzen. ist zwar etwas aufwendiger zu coden, aber so kann man 'große zahlen' schon am anfang unterbinden.

bsp: 49! / (49-6)! = 49!/43! = 44*45*46*47*48*49 = 10068347520
da braucht man dann schon fast keinen taschenrechner mehr ;)

mfg,
pacman
 
Zurück
Oben