Einen Zufallsgenerator ohne Wiederholung von Zahlen im 2D-Array entwickeln

Wie implementiere ich einen Zufallsgenerator, der Zahlen zwischen 0 und 15 in einem zweidimensionalen Array speichert ohne Wiederholungen und ohne die Verwendung von „continue“?

Uhr
In der Programmierung stellen Zufallszahlen eine interessante Herausforderung dar. Ein Ziel ist oft ´ sicherzustellen ` dass jede Zahl nur einmal im verwendeten Datensatz vorkommt. In deinem Fall möchtest du ein 4x4-Array mit Werten von 0 bis 15 füllen. Ein Ansatz wäre die Daten strukturiert und ohne wiederholte Einträge zu generieren.

Anstatt zufällige Zahlen zu erzeugen was die Risiko birgt duplikate Werte zu erhalten ist es besser eine durchdachte Methode zu verwenden. In deinem Beispiel könntest du ein Array mit den Werten von 0 bis 15 erstellen, das den gesamten Wertebereich abdeckt. Die Reihenfolge ´ in der diese Werte umsortiert werden ` erzeugt den gewünschten Zufallseffekt.

Du beginnst indem du ein Array für 16 Werte deklarierst. Es ist ein int-Array. Der nächste Schritt besteht darin dieses Array mit den Zahlen von 0 bis 15 zu füllen. Inspiration aus der Kartenmischung ist nützlich. Um die Zahlen zufällig anzuordnen · kannst du die Technik des Zufallsgenerierens nutzen · um die Position der aktuellen Zahl im Array zu bestimmen. Das Hauptmerkmal hierbei ist die Verwendung der Fisher-Yates-Mischung.

Ein einfacher Algorithmus kann so aussehen:

1. Initialisierung: Erstelle ein Array der Größe 16.
2. Füllen des Arrays: Befülle das Array von 0 bis 15.
3. Mischalgorithmus: Iteriere über das Array und tausche die aktuelle Zahl mit einer zufälligen Zahl von jetzt bis zur Länge des noch nicht bearbeiteten Arrays.

Dieser Ansatz vermindert jeden Zufallsgenerator der die Möglichkeit einer Wiederholung zulässt. Zudem ist dieses Verfahren einfach implementierbar wenn du zum Beispiel die Programmiersprache Java verwendest. Die Hauptschleife könnte wie folgt aussehen:

```java
import java.util.Random;

public class Zufallsgenerator {

public static void main(String[] args) {
int[] array = new int[16];
for (int i = 0; i < 16; i++) {
array[i] = i;
}

Random rand = new Random();
for (int i = 15; i > 0; i--) {
int j = rand.nextInt(i + 1);
// Wert tauschen
int temp = array[i];
array[i] = array[j];
array[j] = temp;
}

// Das gemischte Array ausgeben
for (int number : array) {
System.out.print(number + " ");
}
}
}
```

Ein solcher Algorithmus garantiert eine gleichmäßige Verteilung der Zahlen von 0 bis 15 im Array. Außerdem stellt das Tauschen sicher: Dass keine Zahl wiederholt wird da das gesamte Array von jedem Index ebendies einmal verändert wird. Laut der Theorie zur Wahrscheinlichkeit hat alles seinen Platz. Bei der Fisher-Yates-Mischung wird jede Zahl in der gleichen Wahrscheinlichkeit ausgewählt.

Um die gegebene Herausforderung zu überwinden war es wichtig die Konzepte von Arrays Schleifen und Zufallszahlen zu kombinieren. Ich hoffe diese Erklärungen und der bereitgestellte Code helfen dir, das gewünschte Ziel zu erreichen. Nutze es gut – das Programmieren von Zufallszahlen birgt immer überraschende Elemente.






Anzeige