© serviceprofessionalgmbh

Die Ausgangssituation: Ein Programm soll eine Reihe von Zahlen (zwischen 6 und 12) aus einer Zahlenreihe von 1 bis 49 ziehen. Es muss gewährleistet sein, dass keine der gezogenen Zahlen doppelt vorkommt.

Liefert der Zufallsgenerator bei einem der Durchläufe ein Ergebnis, welches bei einem vorherigen Durchlauf bereits ermittelt wurde, ist der Aufruf des Zufallsgenerators so lange zu wiederholen, bis eine bisher noch nicht gezogene Zahl ermittelt wird.

Eine einfache Aufgabe. Eine Schleife für den Zufallsgenerator. Die Prüfung auf doppelte. Wenn alles OK, Ziehungszähler erhöhen. Anderenfalls Zufallsgenerator neu aufrufen.

In vielen REXX-Seminaren kamen über 90% der Teilnehmer auf eine derartige Lösung.

/* REXX
*/
arg anz .
do while anz < 6 ! anz > 12
   say 'Anzahl zu ziehender Zahlen (6 bis 12):'
   pull anz
end
say
say center("Lotto" anz "aus 49",79,"-")
say
var.=0
x=1
do forever
   if x > anz then leave
   z=random(1,49)
   fehl=0
   if x > 1 then do y=1 to x  /* Pruefen doppelter Zahlen */
      if var.y = z then fehl=1
   end
   var.x=z
   if fehl=0 then x=x+1
end
do x=1 to 49  /* Sortierte Zahlenausgabe */
   do y=1 to anz
      if x=var.y then say centre(var.y,79)
   end
end
say
say center('Viel Erfolg',79,'-')
exit
zurück zu Fun & More