Java Zufallszahlen-Array
|
|
Java-Quelltext |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
import java.util.Arrays; import java.util.Random; public class test { public static void main(String[] argsv){ int mine_counts=6; int rows=8; int columns=8; Random rand = new Random(); int[] mine_nr = new int[mine_counts]; Arrays.fill(mine_nr, -1); for (int i=0; i<mine_counts; i++){ mine_nr[i]=rand.nextInt(rows*columns); if ((Arrays.binarySearch(mine_nr, mine_nr[i]))<0){ System.out.println("\n" + mine_nr[i] + " noch nicht enthalten"); } else{ //i--; System.out.println("\n" + mine_nr[i] + " schon enthalten"); } for (int t=0; t<mine_nr.length; t++) System.out.println("r=" + mine_nr[t]); } Arrays.sort(mine_nr); System.out.print("\n "); for (int t=0; t<mine_nr.length; t++) System.out.print(mine_nr[t] + " "); } } |
Der Code sollte eigentlich ein Array mit Zufallszahlen füllen, die allerdings nur einmal
vorkommen sollen. Leider sagte er, auch wenn Zahlen noch nicht im Array sind, dass
diese schon vorhanden sein sollen. Komisch ist, dass Array-Index 2 immer vorhanden
sein soll.
Was ist hier falsch?
Grüße, nox
versuch mal:
EDIT: Sik: schleife genau 90x
|
|
Java-Quelltext |
1 2 3 4 5 6 |
HashSet<double> hs = new HashSet<double>(); Random r = new Random(System.currentTimeMillis()); for (; hs.size() < 90;) hs.add(r.nextDouble()); Object[] array = hs.toArray(); Arrays.sort(array); System.out.println(array.length); |
EDIT: Sik: schleife genau 90x
Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von »nocturne« (5. November 2009, 14:06)
also du packst in Zeile 16 die Zahl in das Array und schaust dann in Zeile 17 nach ob genau die Zahl schon im Array-Vorkommt? wo ist da die Logik?
Mich wundern also eher die Positionen wo er sagt das die Zahl noch nicht vorhanden ist
Gruß
Egoist
Mich wundern also eher die Positionen wo er sagt das die Zahl noch nicht vorhanden ist

für dieses Problem ist eine feste Anzahl an Schleifendurchgängen(also FOR) meiner Meinung nach ungeeignet, immerhin kann man die notwendigen Schleifendurchgänge durch den Zufallsfaktor nicht vorhersehen.Der Code sollte eigentlich ein Array mit Zufallszahlen füllen, die allerdings nur einmal
vorkommen sollen.
Gruß
Egoist
für dieses Problem ist eine feste Anzahl an Schleifendurchgängen(also FOR) meiner Meinung nach ungeeignet, immerhin kann man die notwendigen Schleifendurchgänge durch den Zufallsfaktor nicht vorhersehen.Der Code sollte eigentlich ein Array mit Zufallszahlen füllen, die allerdings nur einmal
vorkommen sollen.
Deshalb steht ja eigentlich das auskommentierte i--; da.
das von nocturne funktioniert, danke.
nox
also ich hab mir das Code-Beispiel jetzt mehrfach angeschaut und sehe da einfach nicht wo doppelte Einträge im Array verhindert werden
das lässt mir keine Ruhe
wäre nett wenn (mir) das mal jemand erklären könnte
Das Problem mit dem Arrays.binarySearch() ergibt sich daraus, das man diese Funktion nur auf ein sortiertes Array anwenden soll. Zumindest laut Java-Dokumentation
Gruß Ego
Edit: hoffentlich hat das keiner gesehen
das lässt mir keine Ruhe
wäre nett wenn (mir) das mal jemand erklären könnte

Das Problem mit dem Arrays.binarySearch() ergibt sich daraus, das man diese Funktion nur auf ein sortiertes Array anwenden soll. Zumindest laut Java-Dokumentation

Gruß Ego
Edit: hoffentlich hat das keiner gesehen
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ego« (5. November 2009, 13:29)
Brauchst nicht vom Glauben abfallen, vertraue mir!
das siehste auch nicht am code.
Set's sind immer ohne doppelte einträge.
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/Set.html)
Erste Zeile: A collection that contains no duplicate elements.
Ob ein Element shcon vorhanden ist wird erkannt an dem hashCode() des Objektes "Double".
Du wirst denken : ich übergebe kein Double sondern ein double!
Das ist richtig. Jedoch ist Double ein Wrapper von double. Und so wird new Double(1d) immer den gleichen hashCode haben (Sogar über unterschiedliche Classloader hinweg).
das siehste auch nicht am code.Set's sind immer ohne doppelte einträge.
(http://java.sun.com/j2se/1.4.2/docs/api/java/util/Set.html)
Erste Zeile: A collection that contains no duplicate elements.
Ob ein Element shcon vorhanden ist wird erkannt an dem hashCode() des Objektes "Double".
Du wirst denken : ich übergebe kein Double sondern ein double!
Das ist richtig. Jedoch ist Double ein Wrapper von double. Und so wird new Double(1d) immer den gleichen hashCode haben (Sogar über unterschiedliche Classloader hinweg).
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »nocturne« (5. November 2009, 14:13)
Ähnliche Themen
-
(X)HTML & CSS & DHTML & Javascript »-
JS: Mehrdimensionales Array sortieren!?
(7. September 2006, 15:04)
-
Sonstige Programmiersprachen »-
[C++]Zufallszahlen - kein richtiger Zufall
(22. Juni 2004, 19:59)
-
PHP »-
Dynamisches PHP Bild
(26. Oktober 2003, 07:03)


