Hey,
Wie kann ich aus meinem Array mit schon vordefinierten Werten, in zufälliger Reihenfolge, alle auswählen, ohne einen Wert öfter als 1 mal zu erhalten? Bitte um eure Hilfe.
mfg DOM
(21.11.2011 12:42 )DOM88 schrieb: [ -> ]Wie kann ich aus meinem Array mit schon vordefinierten Werten, in zufälliger Reihenfolge, alle auswählen, ohne einen Wert öfter als 1 mal zu erhalten? Bitte um eure Hilfe.
Ich würde das Array über eine FOR-Schleife schicken. Dort bei jeden Durchlauf einen Zufallsindex ermitteln. Weiterhin alle schon benutzen Indizies mittels eines Arrays im Schieberegister durchschieben und bei jeder Schleife auswerten. Ist ein Index schon vorhanden, dann einfach den nächsten nehmen.
Hier mal ein Grundgerüst ohne 'Index-Ermittlungs'-Algorithmus:
[
attachment=37290]
Der Rest ist Hinrschmalz
Beste Grüße,
NWO
Alternativ: Element lesen und dann löschen, dann brauchst du dir nicht merken welches du schon hattest und welches nicht.
Hallo,
Ma@rys Vorschlag im Bild:
[
attachment=37292]
(Nicht, dass das ein ressourcensparendes VI wäre...)
Da die Zahl der Durchläufe bekannt ist, bietet sich eine For-Schleife an. Ansonsten identisch mit M@ry/Gerd:
[
attachment=37294]
Edit: Aber warum sich das alles antun. Das passgenaue VI zum Mischen von Arrays heißt - ja wie wohl? Richtig: "Mischen", und befindet sich in Signalverarbeitung/..Operationen.
[
attachment=37308]
Danke für eure zahlreichen Vorschläge.
@ GerdW: Eine Frage zu deinem Bild. Wo schreibst du die vordefinierten Werte in das Array? Ab dem Multiplizieren mit der Zufallszahl kann ich dem Programm nicht mehr ganz folgen, vielleicht auch weil ich mit Labview erst seit kurzem vertraut bin. Könntest du mir das Programm eventuell in ein paar Schritten kurz erklären?
Lg DOM
Hallo Dom,
1) Schaue, wieviele Elemente noch im Ausgangsarray (im Schieberegister) enthalten sind
2) Wähle zufällig eines dieser Elemente aus (Random * ArraySize, abrunden wegen Index ab 0)
3) Entferne das gewählte Element aus dem Ausgangsarray und schreibe es in den Tunnel
4) Wiederhole die Schleife, bis nur noch 1 Element im Array vorhanden ist
5) Hole die Werte vom (autoindizierenden) Tunnel ab
Zitat:Wo schreibst du die vordefinierten Werte in das Array?
Siehe Punkt 5...
Vielen Dank,
aber eine Frage hätt ich noch, zurzeit werden in das Array nur die Zahlen 0 bis 11 in einer zufälligen Reihenfolge gespeichert. Wie kann ich meine, schon definierten Werte aus dem Array (Bild) in das Programm einbauen, sodass diese anstatt der Zahlen 0 bis 11 zufällig gespeichert werden? Ich nehme an, dass die Werte des Arrays in der For-Schleife übergeben werden müssen, aber das hat bei mir irgendwie nicht geklappt.
Bitte um deinen Rat.
Lg DOM
Hallo Dom,
die FOR-Schleife simuliert nur deine Werte, ich war zu faul, die erst alle abzutippen. (Merke: Je mehr VI du uns anbietest, desto besser können wir auf deine Bedürfnisse eingehen...).
Deshalb:
FOR-Schleife löschen und stattdessen dein Array an das Schieberegister anschließen...
Vielen Dank für deine Hilfe, funktioniert super
Lg DOM