GLBasic forum

Other languages => GLBasic - de => Topic started by: Alexander on 2005-May-08

Title: Zufall mit bestimmten Werten
Post by: Alexander on 2005-May-08
Hi,
Ich habe momentan ein kleines Problem:

Nehmen wir mal an ich habe ein Array/Feld mit 8x8. Jetzt möchte ich in jedes dieser Felder per Zufall einen Wert zwischen 1 und 64 schreiben, jedoch darf jede Zahl nur einmal auftreten.

Wie kann ich das ganze am dümsten anstellen? Mit Randomize/RND krieg ich ja nicht jeden Wert nur einmal, sondern u.Umständen mehrmals... und solange Zufallszahlen zu generieren bis ich einmal alle hab dauert warscheinlich ewig.

In einen anderen Programmiersprache hatte ich immer eine Listbox angelegt, da jede Zahl einmal reingeschrieben und dann mit Randomize einen davon ausgelesen und anschliessend aus der Liste geworfen. Da es keine Listboxen in GLBasic gibt, kann ich das leider nicht so einfach machen...

Wer kann mir helfen? :/
Title: Zufall mit bestimmten Werten
Post by: BumbleBee on 2005-May-08
Hi
Du brauchst eine zweite Zählschleife, die doppelte Zahlen prüft.
Folgender Code zieht die Lottozahlen, bei der es ja auch
keine doppelten Zahlen geben soll.
Die erste Schleife zieht die Zahlen.
Die zweite Schleife prüft ob eine Zahl schon gezogen wurde.
Kann man natürlich auch anders machen.

Code (glbasic) Select
DIM Zahlen[7]

   FOR i=1 TO 6
      Zahlen[i]=RND(48)+1 //1 addieren falls die Null gezogen wird
         
            //Diese Schleife prüft doppelte Zahlen  
       FOR j=0 TO i-1
         IF Zahlen[j]=Zahlen[i]
           i=i-1
         ENDIF
       NEXT
               //Zahlen ausgeben
       PRINT Zahlen[i],300,100+30*i    
   NEXT  
 
  SHOWSCREEN
  MOUSEWAIT
Diese Angaben sind wie immer ohne Gewähr :)

Konnte ich dir damit helfen?


Cheers
Title: Zufall mit bestimmten Werten
Post by: Kitty Hello on 2005-May-08
Nett. Für dieses spezielle Problem hätte ich jetzt in jedes Feld einen Wert 1-64 geschrieben und dann etwa 500x 2 zufällige Zelle "ausgetauscht"
Code (glbasic) Select
DIM a[8][8]
// Klar oder?
FOR x=0 TO 7; FOR y=0 TO 7; y[x][y]=x+y*8+1; NEXT; NEXT

FOR i=0 TO 500
   x1=RND(7); y1=RND(7); x2=RND(7); y2=RND(7)
   merken  = a[x1][y1]
   a[x1][y1] = a[x2][y2]
   a[x2][y2] = merken
NEXT
So long,
Gernot
Title: Zufall mit bestimmten Werten
Post by: Alexander on 2005-May-09
Hi,

also das Beispiel mit dem durcheinandermischen gefällt mir fast besser ;)

Danke auf jedenfall für die Hilfe :)