Einzelnen Beitrag anzeigen

Benutzerbild von Wolfgang Mix
Wolfgang Mix

Registriert seit: 13. Mai 2009
Ort: Lübeck
1.222 Beiträge
 
Delphi 2005 Personal
 
#16

Re: n über k - berechnen!?

  Alt 14. Jan 2010, 16:46
Ich möchte jetzt 'nen alten Thread wiederbeleben, der für mich unbefriedigend
endete. Die Wahrscheinlichkeit, einen 6er im Lotto zu landen, ist
6 über 49, also ca. 1/14 Mio. Mit meinem Aldi-Taschenrechner für 3,99
löse ich das problemlos. Da bei Int64-Werten bei 21! Schluß ist,
habe ich alle Variablen mit dem Typ Extended rechnen lassen.


Laut Embarcadero ist ...

Zitat:
The range for the Extended type
is between 3.6 x 10^-4951 and 1.1 x 10^4932. The size in bytes of an Extended value is 10.
Mit diesem Code prüfe ich das:

Delphi-Quellcode:
function fakultaet(N: Extended): Extended;
var
  i: Integer;
begin
  Result := 1;
  for i := 1 to trunc(N) do
    Result := Result * i
end;

function nueberk(n, k: Extended): Extended;
begin
  Result := fakultaet(n) / (fakultaet(n - k) * fakultaet(k))
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text:=FloatToStr(nueberk(49,6));
end;
Ergebnis:

6 über 49 ---> 1,18366178998794E-60 //Falsch

49 über 6 ---> 13983816 //Richtig

Da die eine Lösung lediglich der Kehrwert der anderen Lösung ist, wundert mich das.

Frage: Was läuft hier falsch?

Grüß

Wolfgang
Wolfgang Mix
if you can't explain it simply you don't understand it well enough - A. Einstein
Mein Baby:http://www.epubli.de/shop/buch/Grund...41818516/52824
  Mit Zitat antworten Zitat