33 lines
582 B
C#
33 lines
582 B
C#
using UnityEngine;
|
|
|
|
namespace Voxus.Random
|
|
{
|
|
public class RandomGaussian : AbstractRandom
|
|
{
|
|
private float sigma;
|
|
|
|
private float mu;
|
|
|
|
public RandomGaussian(float sigma = 1f, float mu = 0f)
|
|
{
|
|
this.sigma = sigma;
|
|
this.mu = mu;
|
|
}
|
|
|
|
public override float Get()
|
|
{
|
|
float num;
|
|
float num3;
|
|
do
|
|
{
|
|
num = 2f * (float)random.NextDouble() - 1f;
|
|
float num2 = 2f * (float)random.NextDouble() - 1f;
|
|
num3 = num * num + num2 * num2;
|
|
}
|
|
while (num3 >= 1f);
|
|
num3 = Mathf.Sqrt(-2f * Mathf.Log(num3) / num3);
|
|
return num * num3 * sigma + mu;
|
|
}
|
|
}
|
|
}
|