java.util.Random < Java < Programmiersprachen < Praxis < Informatik < Vorhilfe
|
Status: |
(Frage) beantwortet | Datum: | 15:33 Fr 02.01.2009 | Autor: | rbsn |
Aufgabe | Damit wir etwas sortieren können, brauchen wir unsortierte Daten. Leiten Sie von der
generischen Klasse java.util.LinkedList<E> eine Klasse RandomLinkedList
ab, die ausschließlich Integer Objekte speichert. Der Aufruf des einzigen Konstruktors
RandomLinkedList(int length) soll eine Liste der Länge length mit zufälligen
Integers erstellen. Benutzen Sie dazu java.util.Random mit dem Seed 1337. |
Hallo,
ich habe obige Aufgabe bereits implementiert, bin mir aber gar nicht sicher ob das stimmt.
Hier der Code:
import java.util.Random;
import java.util.LinkedList;
public class RandomLinkedList<E> extends java.util.LinkedList<E>{
LinkedList<Integer> liste;
public RandomLinkedList(int length){
liste = new LinkedList<Integer>();
Random rnd = new Random(1337);
for(int i = 0; i < length; i++){
liste.add((Integer)(rnd.nextInt()));
}
}
}
Wenn ich nun aber mit
public static void main(String[] args){
RandomLinkedList<Integer> a = new RandomLinkedList<Integer>(20);
RandomLinkedList<Integer> b = new RandomLinkedList<Integer>(20);
System.out.println(a.liste);
System.out.println(b.liste);
}
zwei verschiedene Listen, mit zufaelligen Werten anlege, dann kommen beides male die gleiche Liste raus. Ist das wirklich so oder habe ich irgendwo einen Fehler gemacht???
Vielen Dank schonmal...
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Ja, das Verhalten ist richtig. Da du den Seed setzt wird immer die gleiche Reihe von Zufallszahlen erzeugt.
Daran erkennst du, dass die Zufallszahlen nicht wirklich zufällig sind, sondern aufgrund des Seed berechnet werden. Wenn du zwei verschiedene Reihen haben möchtest, dann nehme einfach mal den Random Standardkonstruktor ohne Parameter. Dann holt sich Random den Seed aus den Millisekunden der Systemuhr und du hast zu jedem Uafruf tatsächlich verschiedene, zufällig aussehende Zahlen
|
|
|
|