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 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; } }