Ein Array per Zufall in ein anderes kopieren

Tobias K.

Erfahrenes Mitglied
moin


Also ich habe 2 Arrays (selbe anzahl von Elementen), eines ist mit Werten gefüllt und das andere ist leer.

Nun sollen die Werte aus dem einen Array per Zufal in das zweite kopiert werden.
Beispiel:
Code:
int eins[10], zwei[10];

.....
// Array eins mit Werten füllen
.....

zwei[zähler] = eins[zufall];

Nun hatte ich erst gedacht per Zufall und Modulo eine Zahl zwischen 1 und 10 erstellen zu lassen, dann zugucken ob das Elemente schon belegt ist, wenn noch nicht belegt kopiere den Wert rein, wenn schon belegt wieder per Zufall und Modulo eine Zahl zwischen 1 und 10 erstellen.......
Das hätte dann aber den Nachteil das das vielleicht eine unendliche Sache wird.

Ich programmiere gerade ein Kartenspiel, dazu hole ich die Bilder der einzelnen Karten aus einer Datei und muss die nun zufällig in eine bestimmte Variable in einer Struktur kopieren. Mir geht es aber nur um die zufällige zuordnung.
Wie könnte ich das nun vernümpftig machen?


mfg
umbrasaxum
 
Ich würd einen Zufallsgenerator eine Zahlenfolge erstellen lassen - bereits erzeugte Zahlen werden in ein array gespeichert und für die nächste Generierung per if-Abfrage verboten.

Nachdem du dann eine zufällige Zahlenkolonne hast, ordnest du deine Arrays anhand dieser Vorschrift um.
 
moin


Nochmal:
Genau diese Verfahren hab ich oben beschrieben und das Problem ist das ich möglicherweise sehr lange warten muss bis z.B. eine 5 kommt.
Wenn das so Problemlos gehen würde müsste ich mir auch nciht erst eine Zahlenfolge erstellen lassen sondern könnte direkt kopieren.


mfg
umbrasaxum
 
asooo ;-)

na dann :)

Du könntest zum Beispiel deinen Zufallsgenerator aufsplitten:

ZG1: 1-5
ZG2: 6-10
zG4: 11-15

und so kleinere Bereiche nacheinander abarbeiten lassen.
natürlich müssten dann ZG1 bis ZGx auch durch Zufall angesteuert werden...

oder du setzt die Größe des Bereiches dynamisch herunter - anhand der maximal erlaubten größten Zufallszahl (aber weniger zu empfehlen, da du dann das Problem hast, wenn du bis 30 zulässt, dass du dann auf die 30 warten musst um die 29 einstellen zu können - und dann sind wir wieder am Anfang deines Problems ;-) )
 
Mach dir noch 2 weitere Arrays derselben Grösse. Füll die beiden Arrays mit den selben Zufallszahlen. Sortier ein Array mit einer beliebigen Methode. Jetzt schaust du nach in welchen Feldern die Zahlen aus dem ursprünglichen Array gelandet sind und verteilst die Positionen in deinem original Array dementsprechend. Darin sollte beliebig genug Zufall enthalten sein, abhängig von der Auswahl des Zahlengenerators und der Sortiermethode.
 
Hi ...

Angenommen die maximale Zahl ist 10
dann würfelst du per zufall (1 bis 10) z.B. eine 5
danach würfelst du zahlen von 1-4 und von 6-10
u.s.w

D.h. Du teilst den Bereich in dem du würfelst mit jedem Wurf in 2 Teile auf, die du dann wieder in jeweils 2 Teile aufteilst usw...

Weiß nicht, ob das eine gute Methode ist, aber kam mir grad so in den Sinn ...

Gruß
Shai
 
moin


@Tritop
Ich glaube du hast das Problem nciht verstanden

@Shaijan
Bin gespannt wie du das in ein Code umsetzen willst.
Will damit nciht sagen das das unmöglich ist, aber ich denke nicht das du das so umsetzen kannst.


mfg
umbrasaxum
 
Du willst die Zahlen aus einem Array per Zufall auf ein anderes Array verteilen, mach das mit der Methode dich vorgeschlagen hab.
 
Du machst 2 komplett neue temporäre arrays gleicher länge die du mit den selben zufallszahlen füllst das eine dieser beiden arrays sortierst du mit einer sort methode. dannach vergleichst du an welcher stelle die zahle nach dem sortieren gelandet sind. Jetzt kannst du die sortierreihenfolge in den temporären arrays auf die sortierung deines kartenarray übertragen.
 
Zurück