Delphi-Quellcode:
if Bereitsgezogen < 6 then begin
Repeat
kugel := random (48) + 1;
i := i + 1;
until not (kugel in gezogene);
und genau hier ist wieder der Fehler drinnen, der diesen Algo. eben nicht identisch zu meinen macht.
Angenommen 3 Kugeln wurden schon gezogen, dann verbleiben 46 Kugeln in der Urne und somit muß es Random(46) heissen. Eine Kugel die bereits gezogen wurde KANN NICHT erneut aus der Urne gezogen werden da sie nicht mehr enthalten ist. In deinem Code ziehst du immer eine Kugel aus immer 49 ( 48 ) Kugeln und falls sie schon gezogen wurde, schmeisst du sie zurück in die Urne und zieht nochmal eine Kugel. Damit verändern sich die Wahrscheinlichkeiten pro Kugel in der Urne mit der sie gezogen werden kann. Der Algo. simuliert also ebenfalls nicht die Lotto-Realität und ist falsch.
Zudem wird mit Random( 48 ) = 0..47 + 1 = 1..48 nicht 1 aus 49 gezogen sondern 1 aus 48.
Gruß Hagen