summaryrefslogtreecommitdiffstats
path: root/src/de/fhswf/in/inf/java1/aufgabe8
diff options
context:
space:
mode:
authorStefan Suhren <suhren.stefan@fh-swf.de>2014-11-19 15:26:42 +0100
committerStefan Suhren <suhren.stefan@fh-swf.de>2014-11-19 15:26:42 +0100
commit242dc8ea6486a9d0b664f0a0dfe39596846a0456 (patch)
treea28431bf252d793c1e5a11a887285a61f5b999bb /src/de/fhswf/in/inf/java1/aufgabe8
parent0a17d5dd687ced4dd501097e6d15376ccbb8b281 (diff)
downloadJava1-242dc8ea6486a9d0b664f0a0dfe39596846a0456.tar.gz
Java1-242dc8ea6486a9d0b664f0a0dfe39596846a0456.zip
Assignment No.8 implemented F&B recursive
Diffstat (limited to 'src/de/fhswf/in/inf/java1/aufgabe8')
-rw-r--r--src/de/fhswf/in/inf/java1/aufgabe8/FloydAndBentley.java88
-rw-r--r--src/de/fhswf/in/inf/java1/aufgabe8/LottoZiehung.java56
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);
+
+ }
+
+}