Re: n über k - berechnen!?
Zitat:
|
Re: n über k - berechnen!?
probier das mal:
Delphi-Quellcode:
ich habs nicht probiert und kann auch gar nicht garantieren, dass der code funktioniert, es is eine (un)überlegte "optimierung" eines montag morgens ;)
function nuberk(n, k: integer): extended;
var i: integer; begin result := 1; for i := n downto 2 do if (i in [k + 1..n]) then result := result * i else if(i in [2..n-k]) then result := result / i; end; |
Re: n über k - berechnen!?
Das mit dem Mengenoperator wird schwierig sobald die Intervallgrenzen ausserhalb von 0..255 liegen. Da solltest du besser mit 2 Vergleichen dran gehen.
Gruss, Fabian (der auch nicht die Richtigkeit überprüft hat ^^) |
Re: n über k - berechnen!?
@Dani: Da hast du Recht ... ich hatte nicht daran gedacht, dass die Gleitkommatypen soviel größer sind, sorry.
|
Re: n über k - berechnen!?
desweiteren werfe ich mal das kürzen des quotienten in die runde!
Code:
/5\ 1*2*3*4*5 4*5
| | = ------------ = ------ \3/ 1*2*3*(1*2) (1*2) |
Re: n über k - berechnen!?
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:
Delphi-Quellcode:
Ergebnis:
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; 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 |
Re: n über k - berechnen!?
Die Formel gilt nur für n >= k
Die Wahrscheinlichkeit für 6 Richtige (ohne Superzahl) ist also 49 über 6 = 13983816 6 über 49 gibt es nicht / ist nicht definiert oder ist gleich 0. (Je nach Geschmack/Definition) Btw.: Was für ein Kehrwert? 14 Millionen ist nicht der Kehrwert von 1E-60 - und n mit k zu vertauschen ist kein Kehrwert sondern einfach nicht sinnvoll ;) |
Re: n über k - berechnen!?
@jfheins
Zitat:
Die Wahrscheinlichkeit für 6 Richtige (ohne Superzahl) ist 6 über 49 = 1/13983816, sonst hättest Du ja 13983816 Gewinne pro Spiel, und 6 über 49 gibt es und das ist der Kehrwert von 49 über 6! |
Re: n über k - berechnen!?
Okay, die Wahrscheinlichkeit für 6 Richtige ist
1/(49 über 6) = 1/13983816 = 7,151124 * 10^-8 Aber 1/(49 über 6) ist nicht gleich (6 über 49) :!: |
Re: n über k - berechnen!?
Zitat:
Zitat:
mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz