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.