Zufallszahlen in Array eintragen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Eurora2

Betreff: Zufallszahlen in Array eintragen

BeitragMi, Jan 10, 2007 23:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich möchte ein Array mit Zufallszahlen füllen. Allerdings solle jede Zahl nur einmal in das Array eingetragen werden.

Das Problem ist das ich nicht weiß wie ich verhindere das er eine Zahl die er schon einmal mit Rand() ausgegen hat noch einmal einträgt.

Sinn der Sache ist das ich mich an einem kleinen Mau Mau Kartenspiel versuche. Nun steht jede Zahl für eine Karte (z.B. die 5 für Kreuz Dame). Es gibt ein Array Kartendeck, in dieses Array sollen nun zufällig die zahlen eingetragen werden (0-31).

Das Ergebniss sollte dann beispielweise so aussehen:

kartendeck(0) = 4
kartendeck(1) = 15
kartendeck(2) = 22
kartendeck(3) = 2

usw.



Andere Frage:

Wie kann ich bei Rand() denn ereichen das er eine Zufallszahl aus eine Auswahl von Zahlen auswählt? Also nicht in einem Bereich von z.B. 0-20 sondern er soll zufällig die Zahl 3,5,7,9,14 oder 153 auswählen.


Bin über jegliche Hilfe sehr dankbar Smile


Gruß

Eurora
 

Dreamora

BeitragDo, Jan 11, 2007 0:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Letzteres: Indem du erst mit Rand() einen Array befüllst und dann mit einem späteren Rand auf die Einträge dieses Array zugreifst und die Zahlen daraus zurück gibst, anstatt die Rand() Resultate.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

SpionAtom

BeitragDo, Jan 11, 2007 0:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum ersten Problem:
Erstelle das Array und fülle es mit allen Werten, danach mische das Array durch, indem du immer 2 zufällige Einträge vertauschst:

Code: [AUSKLAPPEN]
   MAX = 10
   Dim Array(MAX-1)

   ;Array mit allen vorkommenden Werten füllen
   Print "Array vor dem Mischen:"
   For i = 0 To MAX-1
      Array(i) = i
      Print Array(i)
   Next
   
   ;Array ordentlich durchmischen
   For i = 1 To 100
      a = Rand(0, MAX-1)
      b = Rand(0, MAX-1)
      tmp = Array(a)
      Array(a) = Array(b)
      Array(b) = tmp
   Next

   ;Array nach dem mischen
   Print "Array nach dem Mischen:"
   For i = 0 To MAX-1      
      Print Array(i)
   Next

WaitKey
End
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
  • Zuletzt bearbeitet von SpionAtom am Do, Jan 11, 2007 17:06, insgesamt einmal bearbeitet

ToeB

BeitragDo, Jan 11, 2007 16:12
Antworten mit Zitat
Benutzer-Profile anzeigen
SpionAtom hat Folgendes geschrieben:
Code: [AUSKLAPPEN]
   MAX = 10
      ;Array nach dem mischen
   Print "Array vor dem Mischen:"
   For i = 0 To MAX-1      
      Print Array(i)
   Next

WaitKey
End


Muss da nich
Code: [AUSKLAPPEN]

;Array nach dem mischen
   Print "Array nach dem Mischen:"
   For i = 0 To MAX-1      
      Print Array(i)
   Next



Hin ?
Wink
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

SpionAtom

BeitragDo, Jan 11, 2007 17:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Crack93 hat Folgendes geschrieben:
Wink


Die Tücken des Copy&Paste...
Habs verbessert Very Happy
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

Eurora2

BeitragFr, Jan 12, 2007 16:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank euch, funktioniert Smile.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group