Lottowahrscheinlichkeitsrechner

  • Themenstarter 4Monate Programmer
  • Beginndatum
Status
Nicht offen für weitere Antworten.
4

4Monate Programmer

Gast
Hallo leute,

Programmiere gerade eine Lottowahrscheinlichkeits-rechner.

er soll die wahrscheinlichkeit ausrechnen """"" 1:wie viel"""" man gewinnen kann.

zB bei 6 aus 49, bzw: 45 bei uns in Ö.

Formel: 49! / ((49-6)!*49!)


Aber wenn ich ihn in der Konsole ausprobieren will zeigt es an, es wäre eine Division durch 0???????????ß


Bitte helft mir

lg
Code:
public class Lottowahrscheinlichkeit
{
    public static void Lottowahrscheinlichkeit()
    {
        Out.println("Das ist ein Wahrscheinlichkeitszähler für Lotto");
        Out.println("Geben sie ein, wie viele Lottozahlen gezogen werden");
        long lGezogen = In.readLong();                          
        Out.println("Geben sie ein, aus wie vielen Lottozahlern gezogen wird");
        long lAus = In.readLong();
        long Zaehler,divisor1, Fakultät1, Fakultät2, Ergebnis , ZWErgebniss;
        divisor1 = lAus - lGezogen;
        Fakultät2 = 1;
        Fakultät1 = 1;
        for(Zaehler=1 ; Zaehler <= lAus ; Zaehler++)            //Fakultät wird berechnet
        {
            Fakultät1 = Fakultät1 * Zaehler;
            
            if(Zaehler<40) Fakultät2 = Fakultät2 * Zaehler;
        }
        
        divisor1 = Fakultät2 * Fakultät1;                       //divisor wird berechnet(aus fakultät)
        ZWErgebniss = Fakultät1 / divisor1;                     // Tatsächliche Formel:     Fakultät1/(Fakultät2*Fakultät1)
        
        Out.println("1 : " + ZWErgebniss + " , dass sie gewinnen. ;)");
    }
}
 

function

Bekanntes Mitglied
Das wird wohl daran liegen das die berechnung des Divisors den Rahmen des Long sprengt. Bei deiner berechnung ist die Fakultät 19stellig und wenn man dann 2 19stellige Zahlen multipliziert, passt das in keinen Long mehr.
 
S

SlaterB

Gast
du hast einen Long-Überlauf, Fakultät1 udn 2 sind fast am Maximalwert, wenn nicht schon drüber, das Produkt ist dann hier leider 0

bei 49! / ((49-6)!*49!) könntest du 49! rauskürzen, die Formel ist aber falsch:

(n über k) = n! / k! (n-k)!

zudem ist 49-6 doch nicht 40 oder gar 39?!

-------

du musst hier gegeneinander kürzen, damit die Zahlen nicht zu groß werden
1*2*3*4*5*6*...*49
---------------------------------
1*2*3*4*5*6 * 1*2*3*4*5*6*7*8....*43

=

44 * 45* 46...*49
---------------------------------
1*2*3*4*5*6
 
G

Guest

Gast
@Hans: 1.Welches zahlen Format kann ich sonst nehmen??? long ist sowieso schon groß.#
2. 40, weil bei mir in Österreich mit 45 und nicht mit 49 gerechnet wird.
3. Und 45/((45-6)! 45!) müsste doch stimmen
 
S

SlaterB

Gast
> @Hans:

meinst du mich?

> 1.Welches zahlen Format kann ich sonst nehmen??? long ist sowieso schon groß.#

kürzen wie gesagt, auch ein Taschenrechner recht nicht stur 40stellige Ziffern aus
(edit: BigInteger, wenn es denn sein muss)

> 2. 40, weil bei mir in Österreich mit 45 und nicht mit 49 gerechnet wird.

alles klar

> 3. Und 45/((45-6)! 45!) müsste doch stimmen

wie du meinst ;)
ich gebe dir aber den Hinweis, dich doch nochmal zu vergewissern,
unauffälliger Link:
http://de.wikipedia.org/wiki/Binomialkoeffizient
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Oben