probability utilities
This commit is contained in:
75
Assets/Test Assets/ProbabilityTest.cs
Normal file
75
Assets/Test Assets/ProbabilityTest.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
3
Assets/Test Assets/ProbabilityTest.cs.meta
Normal file
3
Assets/Test Assets/ProbabilityTest.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 236a0d6a64b545d78dcc4c3189d6ffde
|
||||
timeCreated: 1671055758
|
||||
Reference in New Issue
Block a user