AGB  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

n über k - berechnen!?

Ein Thema von Plague · begonnen am 16. Jan 2005 · letzter Beitrag vom 21. Jan 2010
Antwort Antwort
Seite 2 von 7     12 34     Letzte » 
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: n über k - berechnen!?

  Alt 16. Jan 2005, 22:53
Zitat:
die Standardaufgaben zu Bernoulliketten arbeiten mit n=10 bis n=100. Und ab 21 ist int64 zu klein!
Der Ansatz, den ich gepostet habe kommt auch mit n = 5000 klar (wird aber irgendwann ungenau). Die Fakultät wird wegen der Rekursion nie als Ganzes berechnet.
Dani H.
  Mit Zitat antworten Zitat
Benutzerbild von JasonDX
JasonDX
(CodeLib-Manager)

Registriert seit: 5. Aug 2004
Ort: München
975 Beiträge
 
#12

Re: n über k - berechnen!?

  Alt 17. Jan 2005, 06:36
probier das mal:
Delphi-Quellcode:
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;
ich habs nicht probiert und kann auch gar nicht garantieren, dass der code funktioniert, es is eine (un)überlegte "optimierung" eines montag morgens
Mike
Passion is no replacement for reason
  Mit Zitat antworten Zitat
Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#13

Re: n über k - berechnen!?

  Alt 17. Jan 2005, 10:08
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 ^^)
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel
  Mit Zitat antworten Zitat
xineohp

Registriert seit: 29. Jan 2004
Ort: Heusenstamm
420 Beiträge
 
Delphi 2005 Professional
 
#14

Re: n über k - berechnen!?

  Alt 17. Jan 2005, 13:34
@Dani: Da hast du Recht ... ich hatte nicht daran gedacht, dass die Gleitkommatypen soviel größer sind, sorry.
Peter Enenkel
blubb
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.436 Beiträge
 
Delphi 7 Architect
 
#15

Re: n über k - berechnen!?

  Alt 17. Jan 2005, 13:44
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)
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

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

Re: n über k - berechnen!?

  Alt 14. Jan 2010, 15: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
Delphi-PRAXiS - Die freundliche Community mit Grüßen aus der MarzipanWeltHauptstadt
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.373 Beiträge
 
#17

Re: n über k - berechnen!?

  Alt 14. Jan 2010, 15:55
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
  Mit Zitat antworten Zitat
Benutzerbild von Wolfgang Mix
Wolfgang Mix

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

Re: n über k - berechnen!?

  Alt 14. Jan 2010, 16:10
@jfheins

Zitat:
Die Wahrscheinlichkeit für 6 Richtige (ohne Superzahl) ist also 49 über 6 = 13983816
Das ist leider nicht richtig!

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!
Wolfgang Mix
Delphi-PRAXiS - Die freundliche Community mit Grüßen aus der MarzipanWeltHauptstadt
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.373 Beiträge
 
#19

Re: n über k - berechnen!?

  Alt 14. Jan 2010, 16:16
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)
  Mit Zitat antworten Zitat
Benutzerbild von patti
patti

Registriert seit: 20. Okt 2004
Ort: Mittelfranken
665 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: n über k - berechnen!?

  Alt 14. Jan 2010, 16:18
Zitat von Wolfgang Mix:
und 6 über 49 gibt es und das ist der
Kehrwert von 49 über 6!
Nein! 6 über 49 gibt es einfach nicht. Die Wahrscheinlichkeit eines Lotogewinns ist (49 über 6)^(-1). Siehe dazu auch Wikipedia:

Zitat:
Ist dabei k > n, so ist (n über k) = 0
(Wikipedia-Artikel "Binomialkoeffizient")

mfg
Patrick Kreutzer
[Informatik-Student im 4. Semester]
http://www.patti-k.de/
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2014 by Daniel R. Wolf