diff --git a/src/Numerics/Distributions/Discrete/Geometric.cs b/src/Numerics/Distributions/Discrete/Geometric.cs index c880a785..93b67cac 100644 --- a/src/Numerics/Distributions/Discrete/Geometric.cs +++ b/src/Numerics/Distributions/Discrete/Geometric.cs @@ -324,7 +324,7 @@ namespace MathNet.Numerics.Distributions /// private static int DoSample(Random rnd, double p) { - return (int)Math.Ceiling(-Math.Log(rnd.NextDouble()) / p); + return p == 1.0 ? 1 : (int)Math.Ceiling(-Math.Log(1.0 - rnd.NextDouble(), 1.0 - p)); } } }