mirror of
https://github.com/esiur/esiur-dotnet.git
synced 2025-05-06 11:32:59 +00:00
56 lines
1.2 KiB
C#
56 lines
1.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
|
|
namespace Esiur.Analysis.Statistics
|
|
{
|
|
public static class Distributions
|
|
{
|
|
|
|
|
|
public static int Factorial(this int n)
|
|
{
|
|
var rt = 1;
|
|
while (n > 1)
|
|
rt *= n--;
|
|
return rt;
|
|
}
|
|
|
|
public static int Permutation(int n, int k)
|
|
{
|
|
var rt = 1;
|
|
var l = n - k;
|
|
while (n > l)
|
|
rt *= n--;
|
|
return n;
|
|
}
|
|
|
|
public static int Combination(int n, int k)
|
|
{
|
|
var rt = 1;
|
|
while (n > k)
|
|
rt *= n--;
|
|
|
|
rt /= Factorial(n - k);
|
|
|
|
return rt;
|
|
}
|
|
|
|
public static Probability Binomial(Probability p, int n, int x)
|
|
{
|
|
return Combination(n, x) * p.Power(x) * (1 - p.Power(n - x));
|
|
}
|
|
|
|
public static Probability Poisson(double l, int x)
|
|
{
|
|
return Math.Exp(-l) * Math.Pow(l, x) / Factorial(x);
|
|
}
|
|
|
|
public static Probability Geometric(Probability p, int x)
|
|
{
|
|
// joint probability of failures and one success
|
|
return p.Inverse().Power(x - 1) * p;
|
|
}
|
|
}
|
|
}
|