package de.wwwu.awolf.presenter.data.generator; import de.wwwu.awolf.model.dao.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; if (!points.containsKey(y)) { points.put(y, signal); size++; } } double min = -10000d; double max = 10000d; int idx = 0; for (Map.Entry d : points.entrySet()) { Line line = new Line(min, max, d.getKey() * min + d.getValue(), d.getKey() * max + d.getValue()); line.setId(idx++ + ""); lines.add(line); } return lines; } }