Guten Morgen, Allerseits.
Ich würde folgende Arrays anlegen:
AlleZahlen : array[1..49] of byte;
EineZiehung : array[1..7] of byte; // sofern eine Zeihung simuliert werden soll
EinEinsatz : array[1..x] of byte; // wenn zufällig erzeugte Einsätze für x Zahlen erzeugt werden sollen;
Jede erzeugt Zahl würde ich im Array AlleZahlen auf Null setzen, so dass ich bei der nächsten Zahl ganz einfach prüfen könnte, ob die Zahl bereits einmal erzeugt wurde. Das ganze so lange laufen lassen, bis die gewünschte Zahl von Zahlen erzeugt ist und abschließend das Array AlleZahlen wieder in den ursprünglichen Zustand verseten.
Delphi-Quellcode:
procedure Ziehung;
begin
i := 1;
repeat
Ramdomize;
zahl := random(49)+1;
if AlleZahlen(zahl] <> 0 then
begin
EineZiehung[i] := zahl; // oder EinEinsatz[i] := zahl;
AlleZahlen[i] := 0;
inc[i];
end;
until i = 7; // oder i = x für Einsätze mit x Zahlen
for i := 1 to 49 do AlleZahlen[i] := i;
end;
Ich habe das nur mal so schnell hingeschrieben und nicht getestet, weil ich im Büro kein Delphi auf dem Rechner habe, sollte aber klappen.
mfg gfjs