public static double Geo(double p, double k)
return Math.Pow(1-p, k) * p;
public static void Main()
double[] probabilities = new double[max - min + 1];
for (int i = min; i <= max; i++)
probabilities[i] = Geo(p, i);
double[] realPs = new double[max - min + 1];
for (int i = min; i <= max; i++)
int delta = Math.Abs(realValue - i);
realPs[i] = 100*probabilities[delta] / (i != realValue && realValue + delta <= max && realValue - delta >= min ? 2 : 1);
for (int i = 0; i < realPs.Length; i++)
Console.WriteLine(i + " " + realPs[i]);
double realCumulative = 0;
for (int i = 0; i < realPs.Length; i++) { realCumulative += realPs[i]; }
Console.WriteLine("Pr " + realCumulative);