Mekanism-tilera-Edition/src/main/java/mekanism/common/util/StatUtils.java

33 lines
658 B
Java
Raw Normal View History

package mekanism.common.util;
import java.util.Random;
import static java.lang.Math.ceil;
import static java.lang.Math.sqrt;
import static java.lang.Math.exp;
import static java.lang.Math.pow;
import static java.lang.Math.PI;
import static java.lang.Math.E;
public class StatUtils
{
public static Random rand = new Random();
public static int inversePoisson(double mean)
{
double r = rand.nextDouble()*exp(mean);
int m = 0;
double p = 1;
double stirlingValue = mean*E;
double stirlingCoeff = 1/sqrt(2*PI);
while((p < r) && (m < 3*ceil(mean)))
{
m++;
p += stirlingCoeff/sqrt(m)*pow((stirlingValue/m), m);
}
return m;
}
}