package presenter.algorithms.util; import model.Line; import model.Point; import java.util.ArrayList; import java.util.concurrent.ThreadLocalRandom; /** * Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden. * * @Author: Armin Wolf * @Email: a_wolf28@uni-muenster.de * @Date: 26.06.2017. */ public class RandomSampler { /** * Diese Methode liefert eine r Elementige zufällige Stichprobe an Geraden. * * @param set Die gesammtmenge der Geraden aus denen gewählt werden soll * @param r Anzahl der zu wählenden Geraden * @return r Elementige zufällige Stichprobe an Geraden */ public static ArrayList run(ArrayList set, Double r, Integer indexOfEnd) { ArrayList sampledLines = new ArrayList<>(); for (int i = 0; i < r; i++) { sampledLines.add(set.get(ThreadLocalRandom.current().nextInt(0, indexOfEnd))); } return sampledLines; } /** * Diese Methode liefert eine r Elementige zufällige Stichprobe van Schnittpunkten. * * @param set Die gesammtmenge der Geraden aus denen gewählt werden soll * @param r Anzahl der zu wählenden Geraden * @return r Elementige zufällige Stichprobe an Schnittpunkten */ public static ArrayList run(ArrayList set, Double r) { ArrayList sampledLines = new ArrayList<>(); Integer indexOfEnd = set.size(); for (int i = 0; i < r; i++) { Double px = set.get(ThreadLocalRandom.current().nextInt(0, indexOfEnd)).getX(); if (!sampledLines.contains(px)) sampledLines.add(px); } return sampledLines; } }