probability utilities

This commit is contained in:
2022-12-15 10:49:46 +01:00
parent 12b0acbcbe
commit 95220bec08
36 changed files with 54415 additions and 7 deletions

View File

@@ -0,0 +1,75 @@
using EscapeRoomEngine.Engine.Runtime.Utilities;
using JetBrains.Annotations;
using MathNet.Numerics.Distributions;
using NaughtyAttributes;
using UnityEngine;
namespace Test_Assets
{
public class ProbabilityTest : MonoBehaviour
{
public NormalDistribution distribution = NormalDistribution.Standard;
public int steps = 24;
public int n = 1000000;
public double sample;
[Button]
[UsedImplicitly]
public void ShowDistribution()
{
var samples = Samples();
var step = 6f / steps;
for (var i = -3f; i < 3f; i += step)
{
var count = 0;
for (var j = 0; j < n; j++)
{
var sample = samples[j];
if (sample >= i && sample < i + step)
{
count++;
}
}
var row = "";
for (var j = 0; j < 1000f*count/n; j++)
{
row += "*";
}
Debug.Log(row);
}
}
[Button]
[UsedImplicitly]
public void CalculateMean()
{
Debug.Log(Probability.Mean(Samples()));
}
[Button]
[UsedImplicitly]
public void CalculateStandardDeviation()
{
Debug.Log(Probability.StandardDeviation(Samples()));
}
[Button]
[UsedImplicitly]
public void SamplePercentile()
{
Debug.Log(distribution.Cumulative(sample));
}
private double[] Samples()
{
var samples = new double[n];
for (var i = 0; i < n; i++)
{
samples[i] = distribution.Sample();
}
return samples;
}
}
}