Webmaster Forum Logo Part 1 Webmaster Forum Logo Part 2
Webmaster Forum Logo Part 3
     
 
  :: Anmeldung

Benutzername:

Registrierung...

Passwort:

Passwort vergessen?

angemeldet bleiben


  
  :: Umfrage
Welche sozialen Netzwerke benutzt du regelmäßig?

 Facebook
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 73%
 keines
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 22%
 Google+
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 19%
 Twitter
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 11%
 Xing
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 schülerVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 6%
 meinVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 studiVZ
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 4%
 MySpace
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%
 LinkedIn
 Webmaster - WebspaceWebmaster - WebspaceWebmaster - Webspace 2%

 ges. 393 Stimmen
 
  :: Buttons

Valid XHTML 1.0 Transitional

noxtiblack

Foren As

Dabei seit: 19.08.2009

Beiträge: 99

 

1 Zum Seitenanfang

Montag, 2. November 2009, 12:45

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
 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

2 Zum Seitenanfang

Montag, 2. November 2009, 14:29

versuch mal:

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)

 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

3 Zum Seitenanfang

Montag, 2. November 2009, 14:30

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? :S

Mich wundern also eher die Positionen wo er sagt das die Zahl noch nicht vorhanden ist :)

Der Code sollte eigentlich ein Array mit Zufallszahlen füllen, die allerdings nur einmal
vorkommen sollen.
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.


Gruß
Egoist
 

noxtiblack

Foren As

Dabei seit: 19.08.2009

Beiträge: 99

 

4 Zum Seitenanfang

Montag, 2. November 2009, 17:37

Der Code sollte eigentlich ein Array mit Zufallszahlen füllen, die allerdings nur einmal
vorkommen sollen.
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.


Deshalb steht ja eigentlich das auskommentierte i--; da.

das von nocturne funktioniert, danke.

nox
 

Ego

Routinier

Dabei seit: 22.07.2009

Beiträge: 322

 

5 Zum Seitenanfang

Donnerstag, 5. November 2009, 13:29

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 :D

wäre nett wenn (mir) das mal jemand erklären könnte :whistling:

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 :D

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Ego« (5. November 2009, 13:29)

 

nocturne

Kaiser

Dabei seit: 06.01.2005

Beiträge: 1 167

 

6 Zum Seitenanfang

Donnerstag, 5. November 2009, 14:13

Brauchst nicht vom Glauben abfallen, vertraue mir!
:D 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)