2
0
mirror of https://github.com/esiur/esiur-dotnet.git synced 2026-04-04 04:18:22 +00:00
This commit is contained in:
2023-04-20 15:55:20 +03:00
parent 0ceaee88aa
commit a95b68c610
46 changed files with 2361 additions and 14 deletions

View File

@@ -0,0 +1,55 @@
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;
}
}
}