2020-03-21 00:37:09 +00:00
|
|
|
package de.wwwu.awolf.presenter.util;
|
2017-09-10 15:45:47 +00:00
|
|
|
|
2020-03-21 00:37:09 +00:00
|
|
|
import java.security.SecureRandom;
|
2017-09-10 15:45:47 +00:00
|
|
|
import java.util.ArrayList;
|
2020-03-24 07:04:07 +00:00
|
|
|
import java.util.Collections;
|
2020-03-21 00:37:09 +00:00
|
|
|
import java.util.List;
|
2017-09-10 15:45:47 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Implementierung verschiedener Algorithmen zur Berechnung von Ausgleichsgeraden.
|
|
|
|
*
|
|
|
|
* @Author: Armin Wolf
|
|
|
|
* @Email: a_wolf28@uni-muenster.de
|
|
|
|
* @Date: 26.06.2017.
|
|
|
|
*/
|
|
|
|
public class RandomSampler {
|
|
|
|
|
2020-03-21 00:37:09 +00:00
|
|
|
private static SecureRandom random = new SecureRandom(); // Compliant for security-sensitive use cases
|
|
|
|
|
|
|
|
private RandomSampler() {
|
|
|
|
super();
|
|
|
|
}
|
|
|
|
|
2017-09-10 15:45:47 +00:00
|
|
|
/**
|
|
|
|
* Diese Methode liefert eine <code>r</code> 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 <code>r</code> Elementige zufällige Stichprobe an Geraden
|
|
|
|
*/
|
2020-03-23 06:58:40 +00:00
|
|
|
public static <T extends Object> List<T> run(List<T> set, Double r) {
|
2020-03-24 07:04:07 +00:00
|
|
|
if (set.isEmpty()) {
|
|
|
|
return Collections.emptyList();
|
|
|
|
} else {
|
|
|
|
int index = 0;
|
|
|
|
List<T> sampled = new ArrayList<>();
|
|
|
|
for (int i = 0; i < r; i++) {
|
|
|
|
index = random.nextInt(set.size());
|
|
|
|
sampled.add(set.get(index));
|
|
|
|
}
|
|
|
|
return sampled;
|
2017-09-10 15:45:47 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|