Java: erstellen Sie ein array mit zufälligen int s, (int s können nur einmal verwendet werden)
Ich habe ein array namens arr
mit Platz für 15 Elemente.
Ich muss legen Sie die zahlen 1 bis 15 in einer zufälligen Reihenfolge in diesem array.
Hier ist was ich versucht habe:
int[] arr = new int[15];
int i,j,k,n;
for (i = 0; i<15; i++) {
for (j=0; j<15; j++) {
n = (int)(Math.random() * 14 + 1);
if (rij[j] != n) {
rij[i] = n;
break;
}
}
}
Dank! 🙂
Und tut es das, was Sie wollen?
NÖ, sonst würde ich nicht posten :p
Die Frage bedeutet, dass Sie sollten klären, was das problem ist: Compile-Zeit-Fehler, Ausnahme-Fehler-Meldung, falsche Ergebnis (welcher input, welcher output, was zu erwarten wäre-Ausgabe), kein Ergebnis, ...
NÖ, sonst würde ich nicht posten :p
Die Frage bedeutet, dass Sie sollten klären, was das problem ist: Compile-Zeit-Fehler, Ausnahme-Fehler-Meldung, falsche Ergebnis (welcher input, welcher output, was zu erwarten wäre-Ausgabe), kein Ergebnis, ...
InformationsquelleAutor gieldops | 2011-10-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden Sie ein ArrayList und füllen es mit zahlen von 1 bis 15.
Shuffle der Liste.
Konvertieren es in ein array.
vielen Dank! es funktioniert wie ein Charme
InformationsquelleAutor Marcelo
Wie es scheint, Hausaufgaben (oder eine interview-Frage?). Wenn das der Fall ist, und Sie sind erforderlich, um die Verwendung von arrays anstatt der integrierten Methoden mit dem Java-Collection-Objekte (oder auch wenn nicht, wirklich), die Antwort ist Fisher-Yates Shuffle Algorithmus
Den modernen in-place-shuffle:
(Ich müsste nachsehen, aber ich vermute, das ist, was Java nutzt unter der Haube für seine
shuffle()
Methoden).Bearbeiten, weil es Spaß macht zu implementieren algorithmen:
In java wäre dies:
... Dies kann weiter optimiert werden mit dem inside-out-version des algo, da Sie wollen, sind zum einfügen einer bekannten Reihe von zahlen in zufälliger Reihenfolge. Der folgenden ist der beste Weg, das zu erreichen, was Sie erklärt, wie tun zu wollen, da es keine zusätzliche Kopien gemacht, wie beim erstellen einer
ArrayList
und kopieren Sie es wieder in ein array.trotzdem danke aber!
So oder so - das ist der algo, die Sie suchen, um zu verstehen, wie es zu tun 🙂
Ein letztes edit zeigt den optimalen Weg, das zu tun, was Sie ursprünglich erklärt, Sie wollten zu tun 😉
InformationsquelleAutor Brian Roach
Machen Sie es wie diese
InformationsquelleAutor Lukas Eder
Dies lassen sich die Elemente nach dem Zufallsprinzip gemischt, in eine
Integer[]
, wenn ' s Recht ist:InformationsquelleAutor Óscar López
Werde ich tun so etwas wie dieses:
Erstellen Sie zunächst eine temporäre arraylist gefüllt mit zahlen von start bis Ende, dann mit dem Zufallsprinzip wählen Sie eine Nummer aus, kopieren Sie es in ein array und entfernen Sie es aus dem temp arraylist, wiederholen, bis die arraylist leer ist...
InformationsquelleAutor Marcx