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 generateDataLines(Set lines, int n) { double m = 5d; double b = 0d; int size = 0; Map 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 d : points.entrySet()) { Line line = new Line(d.getKey(), d.getValue()); line.setId(idx + ""); lines.add(line); idx++; } return lines; } }