summaryrefslogtreecommitdiff
path: root/base/src/main/java/bjc/utils/funcutils/NumberUtils.java
diff options
context:
space:
mode:
authorBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-08 22:39:59 -0300
committerBenjamin J. Culkin <bjculkin@mix.wvu.edu>2017-10-08 22:39:59 -0300
commitc82e3b3b2de0633317ec8fc85925e91422820597 (patch)
tree96567416ce23c5ce85601f9cedc3a94bb1c55cba /base/src/main/java/bjc/utils/funcutils/NumberUtils.java
parentb3ac1c8690c3e14c879913e5dcc03a5f5e14876e (diff)
Start splitting into maven modules
Diffstat (limited to 'base/src/main/java/bjc/utils/funcutils/NumberUtils.java')
-rw-r--r--base/src/main/java/bjc/utils/funcutils/NumberUtils.java69
1 files changed, 69 insertions, 0 deletions
diff --git a/base/src/main/java/bjc/utils/funcutils/NumberUtils.java b/base/src/main/java/bjc/utils/funcutils/NumberUtils.java
new file mode 100644
index 0000000..770d3a5
--- /dev/null
+++ b/base/src/main/java/bjc/utils/funcutils/NumberUtils.java
@@ -0,0 +1,69 @@
+package bjc.utils.funcutils;
+
+import java.util.function.Function;
+
+/**
+ * Utility functions for dealing with numbers
+ *
+ * @author ben
+ *
+ */
+public class NumberUtils {
+ /**
+ * Compute the falling factorial of a number
+ *
+ * @param value
+ * The number to compute
+ * @param power
+ * The power to do the falling factorial for
+ * @return The falling factorial of the number to the power
+ */
+ public static int fallingFactorial(final int value, final int power) {
+ if (power == 0)
+ return 1;
+ else if (power == 1)
+ return value;
+ else {
+ int result = 1;
+
+ for (int currentSub = 0; currentSub < power + 1; currentSub++) {
+ result *= value - currentSub;
+ }
+
+ return result;
+ }
+ }
+
+ /**
+ * Evaluates a linear probability distribution
+ *
+ * @param winning
+ * The number of winning possibilities
+ * @param total
+ * The number of total possibilities
+ * @param rng
+ * The function to use to generate a random possibility
+ * @return Whether or not a random possibility was a winning one
+ */
+ public static boolean isProbable(final int winning, final int total, final Function<Integer, Integer> rng) {
+ return rng.apply(total) < winning;
+ }
+
+ /**
+ * Check if a number is in an inclusive range.
+ *
+ * @param min
+ * The minimum value of the range.
+ *
+ * @param max
+ * The maximum value of the range.
+ *
+ * @param i
+ * The number to check.
+ *
+ * @return Whether the number is in the range.
+ */
+ public static boolean between(final int min, final int max, final int i) {
+ return i >= min && i <= max;
+ }
+}