Files
BH3/Assets/Scripts/Assembly-CSharp/MoleMole/GaussianRandom.cs
2025-08-13 09:26:42 +08:00

35 lines
650 B
C#

using UnityEngine;
namespace MoleMole
{
public static class GaussianRandom
{
private static float spare;
private static bool isSpareReady;
public static float Val(float mean, float stdDev)
{
if (isSpareReady)
{
isSpareReady = false;
return spare * stdDev + mean;
}
float num;
float num2;
float num3;
do
{
num = Random.value * 2f - 1f;
num2 = Random.value * 2f - 1f;
num3 = num * num + num2 * num2;
}
while (num3 >= 1f || num3 == 0f);
float num4 = Mathf.Sqrt(-2f * Mathf.Log(num3) / num3);
spare = num2 * num4;
isSpareReady = true;
return mean + stdDev * num * num4;
}
}
}