algorithms-for-computing-li.../src/main/java/de/wwwu/awolf/presenter/data/generator/DatasetGenerator.java

68 lines
1.6 KiB
Java

package de.wwwu.awolf.presenter.data.generator;
import de.wwwu.awolf.model.Line;
import java.security.SecureRandom;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
*
* @Author: Armin Wolf
* @Email: a_wolf28@uni-muenster.de
* @Date: 01.08.2017.
*/
public class DatasetGenerator {
/**
* Konstruktor
*/
private DatasetGenerator() {
}
/**
* Generieren eines Datensatzes des typen: Gerade. Die Geraden werden in eine übergebene Liste hinzugefügt.
*
* @param n Größe des Datensatzes
* @return Liste des Geraden
*/
public static Set<Line> generateDataLines(Set<Line> lines, int n) {
double m = 5d;
double b = 0d;
int size = 0;
Map<Double, Double> points = new HashMap<>();
//speichere die Koordinaten in einer HashMap, damit keine Punkte
//entstehen deren x-Koordinate zu sehr beieinander liegt.
SecureRandom random = new SecureRandom();
while (size < n) {
double y = random.nextGaussian();
double signal = m * y + b;
signal *= -1;
if (!points.containsKey(y)) {
points.put(y, signal);
size++;
}
}
int idx = lines.size();
for (Map.Entry<Double, Double> d : points.entrySet()) {
Line line = new Line(d.getKey(), d.getValue());
line.setId(idx + "");
lines.add(line);
idx++;
}
return lines;
}
}