diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/de/fhswf/in/inf/java1/aufgabe8/FloydAndBentley.java | 88 | ||||
| -rw-r--r-- | src/de/fhswf/in/inf/java1/aufgabe8/LottoZiehung.java | 56 |
2 files changed, 144 insertions, 0 deletions
diff --git a/src/de/fhswf/in/inf/java1/aufgabe8/FloydAndBentley.java b/src/de/fhswf/in/inf/java1/aufgabe8/FloydAndBentley.java new file mode 100644 index 0000000..8ec8464 --- /dev/null +++ b/src/de/fhswf/in/inf/java1/aufgabe8/FloydAndBentley.java @@ -0,0 +1,88 @@ +/**
+ *
+ */
+package de.fhswf.in.inf.java1.aufgabe8;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Random;
+
+/**
+ * TODO Add comment here
+ *
+ * @author $Author: $
+ * @version $Revision: $, $Date: $ UTC
+ */
+public final class FloydAndBentley
+{
+
+ private static Random rnd = new Random();
+
+ /**
+ * TODO Add constructor comment here
+ *
+ */
+ private FloydAndBentley()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * A function which chooses a sample from a List with the Floyd and Bentley
+ * algorithm.
+ *
+ *
+ * @param <T>
+ * Type of the Lists.
+ * @param s
+ * The set from which the sample is chosen.
+ * @param k
+ * The number of items to be chosen.
+ * @return Return the ordered sample.
+ */
+ public static <T> List<T> sample(List<T> s, int k)
+ {
+ if (s.isEmpty())
+ {
+ throw new IllegalArgumentException("Set is empty");
+ }
+ if (k > s.size())
+ {
+ throw new IllegalArgumentException("k is bigger than the Set");
+ }
+
+ List<T> ret = new ArrayList<>(k);
+ sampleRec(s, k, ret);
+
+ return ret;
+
+ }
+
+ /**
+ * TODO Add method comment here
+ *
+ * @param <T>
+ * @param s
+ * @param k
+ * @param ret
+ */
+ private static <T> void sampleRec(List<T> s, int k, List<T> ret)
+ {
+ if (ret.size() >= k)
+ {
+ return;
+ }
+
+ T val = s.get(rnd.nextInt(s.size() - ((k - ret.size()) - 1)));
+
+ if (ret.contains(val))
+ {
+ val = s.get(s.size() - ((k - ret.size()) - 1));
+ }
+
+ ret.add(val);
+
+ sampleRec(s, k, ret);
+
+ }
+}
diff --git a/src/de/fhswf/in/inf/java1/aufgabe8/LottoZiehung.java b/src/de/fhswf/in/inf/java1/aufgabe8/LottoZiehung.java new file mode 100644 index 0000000..279345d --- /dev/null +++ b/src/de/fhswf/in/inf/java1/aufgabe8/LottoZiehung.java @@ -0,0 +1,56 @@ +/**
+ *
+ */
+package de.fhswf.in.inf.java1.aufgabe8;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * TODO Add comment here
+ *
+ * @author $Author: $
+ * @version $Revision: $, $Date: $ UTC
+ */
+public final class LottoZiehung
+{
+
+ /**
+ * TODO Add constructor comment here
+ *
+ */
+ private LottoZiehung()
+ {
+ // TODO Auto-generated constructor stub
+ }
+
+ /**
+ * TODO Add method comment here
+ *
+ * @param args
+ * Command line arguments.
+ */
+ public static void main(String[] args)
+ {
+ // TODO Auto-generated method stub
+
+ List<Integer> lottoZahlen = new ArrayList<>(49);
+
+ for (int i = 1; i <= 49; i++)
+ {
+ lottoZahlen.add(i);
+ }
+
+ List<Integer> ziehung = FloydAndBentley.sample(lottoZahlen, 7);
+
+ Integer Sonderzahl = ziehung.get(6);
+
+ ziehung.remove(6);
+
+ ziehung.sort(null);
+
+ System.out.println(ziehung + " SonderZahl: " + Sonderzahl);
+
+ }
+
+}
|
