54 lines
1.3 KiB
Java
54 lines
1.3 KiB
Java
package de.wwwu.awolf.presenter.data.generator;
|
|
|
|
import de.wwwu.awolf.model.Line;
|
|
import java.security.SecureRandom;
|
|
import java.util.HashSet;
|
|
import java.util.Set;
|
|
import java.util.concurrent.Callable;
|
|
|
|
/**
|
|
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
|
|
*
|
|
* @Author: Armin Wolf
|
|
* @Email: a_wolf28@uni-muenster.de
|
|
* @Date: 01.08.2017.
|
|
*/
|
|
public class CloudDatasetGenerator implements Callable<Set<Line>> {
|
|
|
|
private final int size;
|
|
|
|
public CloudDatasetGenerator(int size) {
|
|
this.size = size;
|
|
}
|
|
|
|
/**
|
|
* Generiert zu einer gegebenen Größe einen Datensatz des typen: Punktwolke
|
|
*
|
|
* @return Liste der Geraden
|
|
*/
|
|
public Set<Line> generateDataCloud() {
|
|
Set<Line> lines = new HashSet<>();
|
|
SecureRandom random = new SecureRandom();
|
|
double m = 1 + random.nextDouble();
|
|
double b = random.nextDouble();
|
|
|
|
for (int i = 1; i < (size + 1); i++) {
|
|
double y = (random.nextGaussian() * 100) % 100;
|
|
double signal = m * i + b;
|
|
signal *= -1;
|
|
|
|
Line line = new Line(i, signal - y);
|
|
line.setId(i - 1 + "");
|
|
lines.add(line);
|
|
}
|
|
|
|
return lines;
|
|
}
|
|
|
|
@Override
|
|
public Set<Line> call() throws Exception {
|
|
return generateDataCloud();
|
|
}
|
|
}
|
|
|