immer die gleiche Zufallszahl

Indarija

Mitglied
Hallo Leute,

so ganz verstehe ich nicht, was ich falsch mache, darum frag ich hier mal nach.

Ich brauche mehrere Zufallszahlen, aber es werden mir immer die gleichen generiert:
Java:
void zufallMethode(){
   	Random ran = new Random();
	double zufall =  ran.nextDouble();
	[...]
	for (int i = 0; i < parameter.length; i++) {
		double zufall2 = ran.nextDouble();
		[...]
	}
}
Bei Math.random() hab ich vermutet, dass zu wenig Zeit dazwischen liegt. Aber warum nextDouble() nicht geht, verstehe ich nicht.

Ausgabe hat gesagt.:
Zufall 1: 0.8631687197874168
Zufall 2: 0.8631687197874168
Zufall 2: 0.8631687197874168
Zufall 2: 0.8631687197874168
Zufall 2: 0.8631687197874168
Zufall 2: 0.8631687197874168

Wie komm ich zu meinen verschiedenen Zufallszahlen? 🙁
Ich hoffe, ihr könnt mir helfen.
🙂
 
Interessant wäre es, wenn du das ganze als ausführbares Beispiel oder wenigstens die Sysouts dazu schreiben könntest. Ggf gibst du immer zufall aus und nicht zufall2 ?!?
 
Meinst du so?

Java:
void zufallMethode(){
    Random ran = new Random();
    double zufall =  ran.nextDouble();
    System.out.println("Zufall 1: "+zufall);
    for (int i = 0; i < parameter.length; i++) {
        double zufall2 = ran.nextDouble();
        System.out.println("Zufall 2: "+zufall2);
    }
}
 
Bei Math.random() hab ich vermutet, dass zu wenig Zeit dazwischen liegt. Aber warum nextDouble() nicht geht, verstehe ich nicht.)

Bist du sicher, dass du Math.random() hast und nicht java.util.Random?

java.util
Class Random

If two instances of Random are created with the same seed, and the same sequence of method calls is made for each, they will generate and return identical sequences of numbers.

Many applications will find the method Math.random() simpler to use.
 
Eher sowas:
Java:
public class Main {

	public static void main(String[] args) throws Exception {
		Random ran = new Random();
	    double zufall =  ran.nextDouble();
	    System.out.println("Zufall 1: "+zufall);
	    for (int i = 0; i < 10; i++) {
	        double zufall2 = ran.nextDouble();
	        System.out.println("Zufall 2: "+zufall2);
	    }
	}
}
Und bei diesem Code bekommst du immer die selben Zufallszahlen ausgegeben?
 
hmmm, wenn ich diese Methode so ausführe, funktioniert alles richtig. Warum dann in meinem Code nicht .... ???:L

Trotzdem vielen danke, für eure schnellen Antworten.
 
Kann es daran liegen, dass der Rückgabetyp der Methode "Serializable" ist?

Java:
import java.io.Serializable;

public class LkornowsIndividuum implements Individuum, Serializable {
	[...]
}
Java:
import java.util.ArrayList;
import java.util.Random;

public class EvolAlgProgramm {

	private int dimension = 5;
	private final ArrayList<LkornowsIndividuum> eltern;
	
	[...]
	
	private LkornowsIndividuum selbstadaption(LkornowsIndividuum kind){
		double [] parameter = {kind.getAufklaerung(), kind.getLebensquali(), kind.getProduktion(), kind.getSanierung(), kind.getVermehrung()}; 
		Random ran = new Random();
		double sigma = kind.getSigma();
		double zufall =  ran.nextDouble(); // Zufallszahl von 0 bis 1
		System.out.println("Zufall 1: "+zufall);
		for (int i = 0; i < parameter.length; i++) {
			double zufall2 = ran.nextDouble() * sigma; // Zufallszahl von 0 bis sigma
			System.out.println("Zufall 2: "+zufall);
			parameter[i] += zufall2;
		}
		kind.setAufklaerung(parameter[0]);
		kind.setLebensquali(parameter[1]);
		kind.setProduktion(parameter[2]);
		kind.setSanierung(parameter[3]);
		kind.setVermehrung(parameter[4]);
		kind.setSigma( sigma * Math.pow(Math.E, ((1/Math.sqrt(dimension))*zufall)) );
		return kind;
	}
}

Denn vor dem Aufruf dieser Methode funktionieren die Zufallszahlen.
 

Neue Themen


Zurück
Oben