17 lines
663 B
C#
17 lines
663 B
C#
using System.Numerics;
|
|
|
|
namespace FastRng.Distributions;
|
|
|
|
public sealed class CauchyLorentzX1<TNum> : Distribution<TNum> where TNum : IFloatingPointIeee754<TNum>
|
|
{
|
|
private static readonly TNum CONSTANT = TNum.CreateChecked(0.31f);
|
|
private static readonly TNum SCALE = TNum.CreateChecked(0.1f);
|
|
private static readonly TNum MEDIAN = TNum.One;
|
|
private static readonly TNum TWO = TNum.CreateChecked(2f);
|
|
|
|
public CauchyLorentzX1(IRandom<TNum> rng) : base(rng)
|
|
{
|
|
}
|
|
|
|
private protected override TNum ShapeFunction(TNum x) => CONSTANT * (TNum.One / (TNum.Pi * SCALE)) * ((SCALE * SCALE) / (TNum.Pow(x - MEDIAN, TWO) + (SCALE * SCALE)));
|
|
} |