Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Einfache "Kugeln Ziehen"-Aufgabe mit Schleife (https://www.delphipraxis.net/166010-einfache-kugeln-ziehen-aufgabe-mit-schleife.html)

Sir Rufo 26. Jan 2012 06:23

AW: Einfache "Kugeln Ziehen"-Aufgabe mit Schleife
 
Nein, denn die Beschreibung der Aufgabe, der Kommentar und der Code besagen, bei 2 Weißen geht eine Schwarze wieder rein.

angos 26. Jan 2012 06:36

AW: Einfache "Kugeln Ziehen"-Aufgabe mit Schleife
 
@sx2008. Um der Wahrscheinlichkeit gerecht zu werden müsste man die beiden Kugeln einzeln ziehen. Es sind ja nicht zu jedem Zeitpunkt die gleiche Anzahl Schwarz und Weiße Kugeln vorhanden. ;)


Aber noch eine Frage: Wenn man denn nun den Fall hat->Zwei weiße Kugeln gezogen und vorher noch keine schwarze Kugel gezogen (oder zumindest keine mehr neben dem Topf liegen hat, weil man sie alle wieder reingeworfen hat), wird dann eine neue schwarze Kugel "generiert", oder der Schritt "Eine schwarze wieder in den Topf" übersprungen?


Gruß

Sir Rufo 26. Jan 2012 06:39

AW: Einfache "Kugeln Ziehen"-Aufgabe mit Schleife
 
Ganz einfach, die Anzahl der schwarzen Kugeln im Gefäß wird erhöht.

Es ist ein theretisches Konstrukt mit der Annahme, dass die schwarzen Kugeln ausserhalb in beliebiger Anzahl verfügbar sind

EDIT: Der Wahrscheinlichkeit ist mit den 4 Fällen mehr als Genüge getan, es wird durch das separate Ziehen nicht wahrscheinlicher ;)

EDIT2: Wenn ich es mir recht überlege, dann hängt die Wahrscheinlichkeit welche Kombination gezogen wird, ja stark von dem Verhältnis schwarz zu weiß ab - ich glaube jetzt bin ich auch wach.
Somit ist der Lösungsansatz von einbeliebigername eigentlich der sinnvollste
Delphi-Quellcode:
z1 := Random( Schwarze + Weisse ) + 1; // 1. Kugel ziehen
z2 := Random( Schwarze + Weisse - 1 ) + 1; // 2. Kugel ziehen - ist jetzt 1 Kugel weniger im Gefäß

if ( z1 <= Schwarze ) then
  // Erste Kugel ist Schwarz
  begin
    if ( z2 <= Schwarze - 1 ) then
      Fall := 1 // Beide Kugeln Schwarz
    else
      Fall := 3; // Schwarz und Weiß
  end
else
  // Erste Kugel ist Weiß
  begin
    if ( z2 > Schwarze ) then
      Fall := 2 // Beide Kugeln Weiß
    else
      Fall := 3; // Schwarz und Weiß
  end;

Blup 26. Jan 2012 08:23

AW: Einfache "Kugeln Ziehen"-Aufgabe mit Schleife
 
Zitat:

Zitat von Sir Rufo (Beitrag 1147658)
Der Wahrscheinlichkeit ist mit den 4 Fällen mehr als Genüge getan, es wird durch das separate Ziehen nicht wahrscheinlicher ;)

Das Problem ist hier, die 4 Fälle sind vor jedem Doppelzug unterschiedlich wahrscheinlich.
Im Extremfall sind zum Beispiel nur schwarze Kugeln im Hut.
Man müsste also vor jedem Doppelzug erst einmal die Wahrscheinlichkeit für jede Kombination ermitteln.

Einfacher zu Programmieren ist auf jeden Fall die Variante, jede Kugel einzeln zu ziehen.
Im Prinzip z.B. so:
Delphi-Quellcode:
function Ziehung: Farbe;
begin
  n := Random(AnzahlSchwarz + AnzahlWeiss);
  if n < AnzahlSchwarze then
  begin
    Result := Schwarz;
    Dec(AnzahlSchwarz);
  end
  else
    Kugel1 := Weiss;
    Dec(AnzahlWeiss);
  end;
end;

procedure Doppelzug;
begin
  Kugel1 := Ziehung;
  Kugel2 := Ziehung;

  if Kugel1 = Kugel2 then
    Inc(AnzahlSchwarz)
  else
    Inc(AnzahlWeiss);
end;

Edit: Sehe auch gerade das "einbeliebigername" das Prinzip schon gepostet hat.

Sir Rufo 26. Jan 2012 08:27

AW: Einfache "Kugeln Ziehen"-Aufgabe mit Schleife
 
Es fiel mir - nach dem Kaffee - auch wie Schuppen aus den Haaren :mrgreen:
Darum der EDIT in meinem Beitrag :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:18 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz