From 0f724991cdc5a77e87d62ccac641755206a72383 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sat, 7 Nov 2020 15:46:00 +0100 Subject: [PATCH] Refactored NextNumber into distributions --- FastRng/Double/Distributions/Distribution.cs | 44 ++++++++++++ FastRng/Double/Distributions/IDistribution.cs | 8 +++ FastRng/Double/Distributions/Uniform.cs | 44 ++++++++++++ FastRng/Double/IRandom.cs | 13 +--- FastRng/Double/MultiThreadedRng.cs | 48 +------------ FastRng/Double/ShapeFitter.cs | 2 +- FastRng/Float/Distributions/Distribution.cs | 44 ++++++++++++ FastRng/Float/Distributions/IDistribution.cs | 8 +++ FastRng/Float/Distributions/Uniform.cs | 44 ++++++++++++ FastRng/Float/IRandom.cs | 13 +--- FastRng/Float/MultiThreadedRng.cs | 48 +------------ FastRng/Float/ShapeFitter.cs | 2 +- FastRngTests/Double/Distributions/BetaA2B2.cs | 6 +- FastRngTests/Double/Distributions/BetaA2B5.cs | 6 +- FastRngTests/Double/Distributions/BetaA5B2.cs | 6 +- .../Double/Distributions/CauchyLorentzX0.cs | 6 +- .../Double/Distributions/CauchyLorentzX1.cs | 6 +- .../Double/Distributions/ChiSquareK1.cs | 6 +- .../Double/Distributions/ChiSquareK10.cs | 6 +- .../Double/Distributions/ChiSquareK4.cs | 6 +- .../Double/Distributions/ExponentialLa10.cs | 6 +- .../Double/Distributions/ExponentialLa5.cs | 6 +- .../Double/Distributions/GammaA5B15.cs | 6 +- .../Distributions/InverseExponentialLa10.cs | 6 +- .../Distributions/InverseExponentialLa5.cs | 6 +- .../Double/Distributions/InverseGammaA3B05.cs | 6 +- .../Double/Distributions/LaplaceB01M0.cs | 6 +- .../Double/Distributions/LaplaceB01M05.cs | 6 +- .../Double/Distributions/LogNormalS1M0.cs | 6 +- .../Double/Distributions/NormalS02M05.cs | 6 +- .../Double/Distributions/StudentTNu1.cs | 6 +- FastRngTests/Double/Distributions/Uniform.cs | 22 +++--- .../Double/Distributions/WeibullK05La1.cs | 6 +- FastRngTests/Double/MultiThreadedRngTests.cs | 68 +++++++++---------- FastRngTests/Double/PerformanceTests.cs | 4 +- FastRngTests/Float/Distributions/BetaA2B2.cs | 6 +- FastRngTests/Float/Distributions/BetaA2B5.cs | 6 +- FastRngTests/Float/Distributions/BetaA5B2.cs | 6 +- .../Float/Distributions/CauchyLorentzX0.cs | 6 +- .../Float/Distributions/CauchyLorentzX1.cs | 6 +- .../Float/Distributions/ChiSquareK1.cs | 6 +- .../Float/Distributions/ChiSquareK10.cs | 6 +- .../Float/Distributions/ChiSquareK4.cs | 6 +- .../Float/Distributions/ExponentialLa10.cs | 6 +- .../Float/Distributions/ExponentialLa5.cs | 6 +- .../Float/Distributions/GammaA5B15.cs | 6 +- .../Distributions/InverseExponentialLa10.cs | 6 +- .../Distributions/InverseExponentialLa5.cs | 6 +- .../Float/Distributions/InverseGammaA3B05.cs | 6 +- .../Float/Distributions/LaplaceB01M0.cs | 6 +- .../Float/Distributions/LaplaceB01M05.cs | 6 +- .../Float/Distributions/LogNormalS1M0.cs | 6 +- .../Float/Distributions/NormalS02M05.cs | 6 +- .../Float/Distributions/StudentTNu1.cs | 6 +- FastRngTests/Float/Distributions/Uniform.cs | 22 +++--- .../Float/Distributions/WeibullK05La1.cs | 6 +- FastRngTests/Float/MultiThreadedRngTests.cs | 68 +++++++++---------- FastRngTests/Float/PerformanceTests.cs | 7 +- 58 files changed, 417 insertions(+), 332 deletions(-) diff --git a/FastRng/Double/Distributions/Distribution.cs b/FastRng/Double/Distributions/Distribution.cs index 1eadbcd..ad58d5a 100644 --- a/FastRng/Double/Distributions/Distribution.cs +++ b/FastRng/Double/Distributions/Distribution.cs @@ -21,5 +21,49 @@ namespace FastRng.Double.Distributions protected abstract double ShapeFunction(double x); public async ValueTask GetDistributedValue(CancellationToken token = default) => await this.fitter.NextNumber(token); + + public async ValueTask NextNumber(uint rangeStart, uint rangeEnd, CancellationToken cancel = default) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (uint) ((distributedValue * range) + rangeStart); + } + + public async ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, CancellationToken cancel = default(CancellationToken)) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (ulong) ((distributedValue * range) + rangeStart); + } + + public async ValueTask NextNumber(double rangeStart, double rangeEnd, CancellationToken cancel = default(CancellationToken)) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (distributedValue * range) + rangeStart; + } + + public async ValueTask NextNumber(CancellationToken cancel = default) => await this.NextNumber(0.0, 1.0, cancel); } } \ No newline at end of file diff --git a/FastRng/Double/Distributions/IDistribution.cs b/FastRng/Double/Distributions/IDistribution.cs index 9211ac9..7794497 100644 --- a/FastRng/Double/Distributions/IDistribution.cs +++ b/FastRng/Double/Distributions/IDistribution.cs @@ -6,5 +6,13 @@ namespace FastRng.Double.Distributions public interface IDistribution { public ValueTask GetDistributedValue(CancellationToken token); + + public ValueTask NextNumber(uint rangeStart, uint rangeEnd, CancellationToken cancel = default); + + public ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, CancellationToken cancel = default); + + public ValueTask NextNumber(double rangeStart, double rangeEnd, CancellationToken cancel = default); + + public ValueTask NextNumber(CancellationToken cancel = default); } } \ No newline at end of file diff --git a/FastRng/Double/Distributions/Uniform.cs b/FastRng/Double/Distributions/Uniform.cs index 7d8f7e9..073dbfa 100644 --- a/FastRng/Double/Distributions/Uniform.cs +++ b/FastRng/Double/Distributions/Uniform.cs @@ -17,5 +17,49 @@ namespace FastRng.Double.Distributions } public async ValueTask GetDistributedValue(CancellationToken token = default) => await this.rng.GetUniform(token); + + public async ValueTask NextNumber(uint rangeStart, uint rangeEnd, CancellationToken cancel = default) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (uint) ((distributedValue * range) + rangeStart); + } + + public async ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, CancellationToken cancel = default(CancellationToken)) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (ulong) ((distributedValue * range) + rangeStart); + } + + public async ValueTask NextNumber(double rangeStart, double rangeEnd, CancellationToken cancel = default(CancellationToken)) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (distributedValue * range) + rangeStart; + } + + public async ValueTask NextNumber(CancellationToken cancel = default) => await this.NextNumber(0.0, 1.0, cancel); } } \ No newline at end of file diff --git a/FastRng/Double/IRandom.cs b/FastRng/Double/IRandom.cs index 396d0b8..ec4220c 100644 --- a/FastRng/Double/IRandom.cs +++ b/FastRng/Double/IRandom.cs @@ -1,21 +1,12 @@ +using System; using System.Threading; using System.Threading.Tasks; using FastRng.Double.Distributions; namespace FastRng.Double { - public interface IRandom + public interface IRandom : IDisposable { public ValueTask GetUniform(CancellationToken cancel = default); - - public ValueTask NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default); - - public ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default); - - public ValueTask NextNumber(double rangeStart, double rangeEnd, IDistribution distribution, CancellationToken cancel = default); - - public ValueTask NextNumber(IDistribution distribution, CancellationToken cancel = default); - - public void StopProducer(); } } \ No newline at end of file diff --git a/FastRng/Double/MultiThreadedRng.cs b/FastRng/Double/MultiThreadedRng.cs index 629eb23..5c586a0 100644 --- a/FastRng/Double/MultiThreadedRng.cs +++ b/FastRng/Double/MultiThreadedRng.cs @@ -298,52 +298,8 @@ namespace FastRng.Double // return double.NaN; } - - public async ValueTask NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default) - { - if (rangeStart > rangeEnd) - { - var tmp = rangeStart; - rangeStart = rangeEnd; - rangeEnd = tmp; - } - - var range = rangeEnd - rangeStart; - var distributedValue = await distribution.GetDistributedValue(cancel); - return (uint) ((distributedValue * range) + rangeStart); - } - - public async ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default(CancellationToken)) - { - if (rangeStart > rangeEnd) - { - var tmp = rangeStart; - rangeStart = rangeEnd; - rangeEnd = tmp; - } - - var range = rangeEnd - rangeStart; - var distributedValue = await distribution.GetDistributedValue(cancel); - return (ulong) ((distributedValue * range) + rangeStart); - } - - public async ValueTask NextNumber(double rangeStart, double rangeEnd, IDistribution distribution, CancellationToken cancel = default(CancellationToken)) - { - if (rangeStart > rangeEnd) - { - var tmp = rangeStart; - rangeStart = rangeEnd; - rangeEnd = tmp; - } - - var range = rangeEnd - rangeStart; - var distributedValue = await distribution.GetDistributedValue(cancel); - return (distributedValue * range) + rangeStart; - } - - public async ValueTask NextNumber(IDistribution distribution, CancellationToken cancel = default) => await this.NextNumber(0.0, 1.0, distribution, cancel); - - public void StopProducer() => this.producerTokenSource.Cancel(); + + private void StopProducer() => this.producerTokenSource.Cancel(); public void Dispose() => this.StopProducer(); diff --git a/FastRng/Double/ShapeFitter.cs b/FastRng/Double/ShapeFitter.cs index d9b0350..032ddee 100644 --- a/FastRng/Double/ShapeFitter.cs +++ b/FastRng/Double/ShapeFitter.cs @@ -52,7 +52,7 @@ namespace FastRng.Double nextBucket = this.probabilities.Length - 1; var threshold = this.probabilities[nextBucket]; - var y = await this.rng.NextNumber(0.0d, this.max, this.uniform, token); + var y = await this.uniform.NextNumber(0.0d, this.max, token); if (double.IsNaN(y)) return y; diff --git a/FastRng/Float/Distributions/Distribution.cs b/FastRng/Float/Distributions/Distribution.cs index 2780fc9..ded9a51 100644 --- a/FastRng/Float/Distributions/Distribution.cs +++ b/FastRng/Float/Distributions/Distribution.cs @@ -21,5 +21,49 @@ namespace FastRng.Float.Distributions protected abstract float ShapeFunction(float x); public async ValueTask GetDistributedValue(CancellationToken token = default) => await this.fitter.NextNumber(token); + + public async ValueTask NextNumber(uint rangeStart, uint rangeEnd, CancellationToken cancel = default) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (uint) ((distributedValue * range) + rangeStart); + } + + public async ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, CancellationToken cancel = default(CancellationToken)) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (ulong) ((distributedValue * range) + rangeStart); + } + + public async ValueTask NextNumber(float rangeStart, float rangeEnd, CancellationToken cancel = default(CancellationToken)) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (distributedValue * range) + rangeStart; + } + + public async ValueTask NextNumber(CancellationToken cancel = default) => await this.NextNumber(0.0f, 1.0f, cancel); } } \ No newline at end of file diff --git a/FastRng/Float/Distributions/IDistribution.cs b/FastRng/Float/Distributions/IDistribution.cs index 0e1a2d5..7381870 100644 --- a/FastRng/Float/Distributions/IDistribution.cs +++ b/FastRng/Float/Distributions/IDistribution.cs @@ -6,5 +6,13 @@ namespace FastRng.Float.Distributions public interface IDistribution { public ValueTask GetDistributedValue(CancellationToken token); + + public ValueTask NextNumber(uint rangeStart, uint rangeEnd, CancellationToken cancel = default); + + public ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, CancellationToken cancel = default); + + public ValueTask NextNumber(float rangeStart, float rangeEnd, CancellationToken cancel = default); + + public ValueTask NextNumber(CancellationToken cancel = default); } } \ No newline at end of file diff --git a/FastRng/Float/Distributions/Uniform.cs b/FastRng/Float/Distributions/Uniform.cs index bd11774..13650f7 100644 --- a/FastRng/Float/Distributions/Uniform.cs +++ b/FastRng/Float/Distributions/Uniform.cs @@ -17,5 +17,49 @@ namespace FastRng.Float.Distributions } public async ValueTask GetDistributedValue(CancellationToken token = default) => await this.rng.GetUniform(token); + + public async ValueTask NextNumber(uint rangeStart, uint rangeEnd, CancellationToken cancel = default) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (uint) ((distributedValue * range) + rangeStart); + } + + public async ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, CancellationToken cancel = default(CancellationToken)) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (ulong) ((distributedValue * range) + rangeStart); + } + + public async ValueTask NextNumber(float rangeStart, float rangeEnd, CancellationToken cancel = default(CancellationToken)) + { + if (rangeStart > rangeEnd) + { + var tmp = rangeStart; + rangeStart = rangeEnd; + rangeEnd = tmp; + } + + var range = rangeEnd - rangeStart; + var distributedValue = await this.GetDistributedValue(cancel); + return (distributedValue * range) + rangeStart; + } + + public async ValueTask NextNumber(CancellationToken cancel = default) => await this.NextNumber(0.0f, 1.0f, cancel); } } \ No newline at end of file diff --git a/FastRng/Float/IRandom.cs b/FastRng/Float/IRandom.cs index af8d319..268d037 100644 --- a/FastRng/Float/IRandom.cs +++ b/FastRng/Float/IRandom.cs @@ -1,21 +1,12 @@ +using System; using System.Threading; using System.Threading.Tasks; using FastRng.Float.Distributions; namespace FastRng.Float { - public interface IRandom + public interface IRandom : IDisposable { public ValueTask GetUniform(CancellationToken cancel = default); - - public ValueTask NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default); - - public ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default); - - public ValueTask NextNumber(float rangeStart, float rangeEnd, IDistribution distribution, CancellationToken cancel = default); - - public ValueTask NextNumber(IDistribution distribution, CancellationToken cancel = default); - - public void StopProducer(); } } \ No newline at end of file diff --git a/FastRng/Float/MultiThreadedRng.cs b/FastRng/Float/MultiThreadedRng.cs index 2456479..1c15b40 100644 --- a/FastRng/Float/MultiThreadedRng.cs +++ b/FastRng/Float/MultiThreadedRng.cs @@ -298,52 +298,8 @@ namespace FastRng.Float // return float.NaN; } - - public async ValueTask NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default) - { - if (rangeStart > rangeEnd) - { - var tmp = rangeStart; - rangeStart = rangeEnd; - rangeEnd = tmp; - } - - var range = rangeEnd - rangeStart; - var distributedValue = await distribution.GetDistributedValue(cancel); - return (uint) ((distributedValue * range) + rangeStart); - } - - public async ValueTask NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default(CancellationToken)) - { - if (rangeStart > rangeEnd) - { - var tmp = rangeStart; - rangeStart = rangeEnd; - rangeEnd = tmp; - } - - var range = rangeEnd - rangeStart; - var distributedValue = await distribution.GetDistributedValue(cancel); - return (ulong) ((distributedValue * range) + rangeStart); - } - - public async ValueTask NextNumber(float rangeStart, float rangeEnd, IDistribution distribution, CancellationToken cancel = default(CancellationToken)) - { - if (rangeStart > rangeEnd) - { - var tmp = rangeStart; - rangeStart = rangeEnd; - rangeEnd = tmp; - } - - var range = rangeEnd - rangeStart; - var distributedValue = await distribution.GetDistributedValue(cancel); - return (distributedValue * range) + rangeStart; - } - - public async ValueTask NextNumber(IDistribution distribution, CancellationToken cancel = default) => await this.NextNumber(0.0f, 1.0f, distribution, cancel); - - public void StopProducer() => this.producerTokenSource.Cancel(); + + private void StopProducer() => this.producerTokenSource.Cancel(); public void Dispose() => this.StopProducer(); diff --git a/FastRng/Float/ShapeFitter.cs b/FastRng/Float/ShapeFitter.cs index 2f9a05e..3ddab89 100644 --- a/FastRng/Float/ShapeFitter.cs +++ b/FastRng/Float/ShapeFitter.cs @@ -51,7 +51,7 @@ namespace FastRng.Float nextBucket = this.probabilities.Length - 1; var threshold = this.probabilities[nextBucket]; - var y = await this.rng.NextNumber(0.0f, this.max, this.uniform, token); + var y = await this.uniform.NextNumber(0.0f, this.max, token); if (float.IsNaN(y)) return y; diff --git a/FastRngTests/Double/Distributions/BetaA2B2.cs b/FastRngTests/Double/Distributions/BetaA2B2.cs index 91c5b9b..5581d01 100644 --- a/FastRngTests/Double/Distributions/BetaA2B2.cs +++ b/FastRngTests/Double/Distributions/BetaA2B2.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var samples = new double[1_000]; var dist = new FastRng.Double.Distributions.BetaA2B2(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var samples = new double[1_000]; var dist = new FastRng.Double.Distributions.BetaA2B2(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/BetaA2B5.cs b/FastRngTests/Double/Distributions/BetaA2B5.cs index 8abb944..0a64b40 100644 --- a/FastRngTests/Double/Distributions/BetaA2B5.cs +++ b/FastRngTests/Double/Distributions/BetaA2B5.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var samples = new double[1_000]; var dist = new FastRng.Double.Distributions.BetaA2B5(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var samples = new double[1_000]; var dist = new FastRng.Double.Distributions.BetaA2B5(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/BetaA5B2.cs b/FastRngTests/Double/Distributions/BetaA5B2.cs index 264cfc9..fd31cac 100644 --- a/FastRngTests/Double/Distributions/BetaA5B2.cs +++ b/FastRngTests/Double/Distributions/BetaA5B2.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var samples = new double[1_000]; var dist = new FastRng.Double.Distributions.BetaA5B2(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var samples = new double[1_000]; var dist = new FastRng.Double.Distributions.BetaA5B2(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/CauchyLorentzX0.cs b/FastRngTests/Double/Distributions/CauchyLorentzX0.cs index 67cd020..d7460e7 100644 --- a/FastRngTests/Double/Distributions/CauchyLorentzX0.cs +++ b/FastRngTests/Double/Distributions/CauchyLorentzX0.cs @@ -23,7 +23,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -55,7 +55,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); @@ -70,7 +70,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/CauchyLorentzX1.cs b/FastRngTests/Double/Distributions/CauchyLorentzX1.cs index fcda813..4bd7974 100644 --- a/FastRngTests/Double/Distributions/CauchyLorentzX1.cs +++ b/FastRngTests/Double/Distributions/CauchyLorentzX1.cs @@ -23,7 +23,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -55,7 +55,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); @@ -70,7 +70,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/ChiSquareK1.cs b/FastRngTests/Double/Distributions/ChiSquareK1.cs index 7a44cfc..c741c56 100644 --- a/FastRngTests/Double/Distributions/ChiSquareK1.cs +++ b/FastRngTests/Double/Distributions/ChiSquareK1.cs @@ -21,7 +21,7 @@ namespace FastRngTests.Double.Distributions for (var n = 0; n < 100_000; n++) { - var value = await rng.NextNumber(dist); + var value = await dist.NextNumber(); fqa.CountThis(value); } @@ -55,7 +55,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ChiSquareK1(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -70,7 +70,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ChiSquareK1(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/ChiSquareK10.cs b/FastRngTests/Double/Distributions/ChiSquareK10.cs index 6067b35..b7a241c 100644 --- a/FastRngTests/Double/Distributions/ChiSquareK10.cs +++ b/FastRngTests/Double/Distributions/ChiSquareK10.cs @@ -21,7 +21,7 @@ namespace FastRngTests.Double.Distributions for (var n = 0; n < 100_000; n++) { - var value = await rng.NextNumber(dist); + var value = await dist.NextNumber(); fqa.CountThis(value); } @@ -55,7 +55,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ChiSquareK10(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -70,7 +70,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ChiSquareK10(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/ChiSquareK4.cs b/FastRngTests/Double/Distributions/ChiSquareK4.cs index 02e18a0..d35933d 100644 --- a/FastRngTests/Double/Distributions/ChiSquareK4.cs +++ b/FastRngTests/Double/Distributions/ChiSquareK4.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ChiSquareK4(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ChiSquareK4(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/ExponentialLa10.cs b/FastRngTests/Double/Distributions/ExponentialLa10.cs index 3e5e876..cf0e380 100644 --- a/FastRngTests/Double/Distributions/ExponentialLa10.cs +++ b/FastRngTests/Double/Distributions/ExponentialLa10.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ExponentialLa10(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ExponentialLa10(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/ExponentialLa5.cs b/FastRngTests/Double/Distributions/ExponentialLa5.cs index bb73bcf..7be1596 100644 --- a/FastRngTests/Double/Distributions/ExponentialLa5.cs +++ b/FastRngTests/Double/Distributions/ExponentialLa5.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ExponentialLa5(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.ExponentialLa5(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/GammaA5B15.cs b/FastRngTests/Double/Distributions/GammaA5B15.cs index dc0fb53..dde9e88 100644 --- a/FastRngTests/Double/Distributions/GammaA5B15.cs +++ b/FastRngTests/Double/Distributions/GammaA5B15.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.GammaA5B15(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.GammaA5B15(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/InverseExponentialLa10.cs b/FastRngTests/Double/Distributions/InverseExponentialLa10.cs index 4d31cd0..d3b3b47 100644 --- a/FastRngTests/Double/Distributions/InverseExponentialLa10.cs +++ b/FastRngTests/Double/Distributions/InverseExponentialLa10.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.InverseExponentialLa10(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.InverseExponentialLa10(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/InverseExponentialLa5.cs b/FastRngTests/Double/Distributions/InverseExponentialLa5.cs index 93c6c7d..51f74b1 100644 --- a/FastRngTests/Double/Distributions/InverseExponentialLa5.cs +++ b/FastRngTests/Double/Distributions/InverseExponentialLa5.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.InverseExponentialLa5(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.InverseExponentialLa5(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/InverseGammaA3B05.cs b/FastRngTests/Double/Distributions/InverseGammaA3B05.cs index db120a1..c2299e6 100644 --- a/FastRngTests/Double/Distributions/InverseGammaA3B05.cs +++ b/FastRngTests/Double/Distributions/InverseGammaA3B05.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.InverseGammaA3B05(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.InverseGammaA3B05(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/LaplaceB01M0.cs b/FastRngTests/Double/Distributions/LaplaceB01M0.cs index b9ae2da..5865e83 100644 --- a/FastRngTests/Double/Distributions/LaplaceB01M0.cs +++ b/FastRngTests/Double/Distributions/LaplaceB01M0.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.LaplaceB01M0(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.LaplaceB01M0(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/LaplaceB01M05.cs b/FastRngTests/Double/Distributions/LaplaceB01M05.cs index 65d1448..731318b 100644 --- a/FastRngTests/Double/Distributions/LaplaceB01M05.cs +++ b/FastRngTests/Double/Distributions/LaplaceB01M05.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.LaplaceB01M05(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.LaplaceB01M05(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/LogNormalS1M0.cs b/FastRngTests/Double/Distributions/LogNormalS1M0.cs index 6518208..bc8fdb9 100644 --- a/FastRngTests/Double/Distributions/LogNormalS1M0.cs +++ b/FastRngTests/Double/Distributions/LogNormalS1M0.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.LogNormalS1M0(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.LogNormalS1M0(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/NormalS02M05.cs b/FastRngTests/Double/Distributions/NormalS02M05.cs index 5a711ba..ae88040 100644 --- a/FastRngTests/Double/Distributions/NormalS02M05.cs +++ b/FastRngTests/Double/Distributions/NormalS02M05.cs @@ -25,7 +25,7 @@ namespace FastRngTests.Double.Distributions for (var n = 0; n < 100_000; n++) { - var nextNumber = await rng.NextNumber(dist); + var nextNumber = await dist.NextNumber(); stats.Push(nextNumber); fra.CountThis(nextNumber); } @@ -48,7 +48,7 @@ namespace FastRngTests.Double.Distributions var samples = new double[1_000]; var dist = new FastRng.Double.Distributions.NormalS02M05(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); @@ -63,7 +63,7 @@ namespace FastRngTests.Double.Distributions var samples = new double[1_000]; var dist = new FastRng.Double.Distributions.NormalS02M05(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/StudentTNu1.cs b/FastRngTests/Double/Distributions/StudentTNu1.cs index 5f2a59d..d61db7a 100644 --- a/FastRngTests/Double/Distributions/StudentTNu1.cs +++ b/FastRngTests/Double/Distributions/StudentTNu1.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.StudentTNu1(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.StudentTNu1(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/Distributions/Uniform.cs b/FastRngTests/Double/Distributions/Uniform.cs index 82ad284..c9b55cf 100644 --- a/FastRngTests/Double/Distributions/Uniform.cs +++ b/FastRngTests/Double/Distributions/Uniform.cs @@ -119,7 +119,7 @@ namespace FastRngTests.Double.Distributions using var rng = new MultiThreadedRng(); var dist = new FastRng.Double.Distributions.Uniform(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); @@ -134,7 +134,7 @@ namespace FastRngTests.Double.Distributions using var rng = new MultiThreadedRng(); var dist = new FastRng.Double.Distributions.Uniform(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); @@ -164,7 +164,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0, 100, dist)]++; + distribution[await dist.NextNumber(0, 100)]++; for (var n = 0; n < distribution.Length - 1; n++) Assert.That(distribution[n], Is.GreaterThan(0)); @@ -180,7 +180,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0UL, 100, dist)]++; + distribution[await dist.NextNumber(0UL, 100)]++; for (var n = 0; n < distribution.Length - 1; n++) Assert.That(distribution[n], Is.GreaterThan(0)); @@ -196,7 +196,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[(uint)Math.Floor(await rng.NextNumber(0.0, 100.0, dist))]++; + distribution[(uint)Math.Floor(await dist.NextNumber(0.0, 100.0))]++; for (var n = 0; n < distribution.Length - 1; n++) Assert.That(distribution[n], Is.GreaterThan(0)); @@ -211,7 +211,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0, 100, dist)]++; + distribution[await dist.NextNumber(0, 100)]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 600)); } @@ -225,7 +225,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0UL, 100, dist)]++; + distribution[await dist.NextNumber(0UL, 100)]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 600)); } @@ -239,7 +239,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[(uint)Math.Floor(await rng.NextNumber(0.0, 100.0, dist))]++; + distribution[(uint)Math.Floor(await dist.NextNumber(0.0, 100.0))]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 600)); } @@ -253,7 +253,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 100_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0, 100, dist)]++; + distribution[await dist.NextNumber(0, 100)]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 6_000)); } @@ -267,7 +267,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 100_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0UL, 100, dist)]++; + distribution[await dist.NextNumber(0UL, 100)]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 6_000)); } @@ -281,7 +281,7 @@ namespace FastRngTests.Double.Distributions var distribution = new uint[101]; var runs = 100_000_000; for (var n = 0; n < runs; n++) - distribution[(uint)Math.Floor(await rng.NextNumber(0.0, 100.0, dist))]++; + distribution[(uint)Math.Floor(await dist.NextNumber(0.0, 100.0))]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 6_000)); } diff --git a/FastRngTests/Double/Distributions/WeibullK05La1.cs b/FastRngTests/Double/Distributions/WeibullK05La1.cs index 5345eec..8e7ce9d 100644 --- a/FastRngTests/Double/Distributions/WeibullK05La1.cs +++ b/FastRngTests/Double/Distributions/WeibullK05La1.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.WeibullK05La1(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0, 1.0, dist); + samples[n] = await dist.NextNumber(-1.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Double.Distributions var dist = new FastRng.Double.Distributions.WeibullK05La1(rng); var samples = new double[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0, 1.0, dist); + samples[n] = await dist.NextNumber(0.0, 1.0); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); diff --git a/FastRngTests/Double/MultiThreadedRngTests.cs b/FastRngTests/Double/MultiThreadedRngTests.cs index 17a2691..900a176 100644 --- a/FastRngTests/Double/MultiThreadedRngTests.cs +++ b/FastRngTests/Double/MultiThreadedRngTests.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Double { var dist = new Uniform(this.rng); for (uint n = 0; n < 1_000_000; n++) - Assert.That(await rng.NextNumber(n, 100_000 + n, dist), Is.InRange(n, 100_000 + n)); + Assert.That(await dist.NextNumber(n, 100_000 + n), Is.InRange(n, 100_000 + n)); } [Test] @@ -30,7 +30,7 @@ namespace FastRngTests.Double { var dist = new Uniform(this.rng); for (ulong n = 0; n < 1_000_000; n++) - Assert.That(await rng.NextNumber(n, 100_000 + n, dist), Is.InRange(n, 100_000 + n)); + Assert.That(await dist.NextNumber(n, 100_000 + n), Is.InRange(n, 100_000 + n)); } [Test] @@ -40,7 +40,7 @@ namespace FastRngTests.Double { var dist = new Uniform(this.rng); for (var n = 0.0; n < 1e6; n++) - Assert.That(await rng.NextNumber(n, 100_000 + n, dist), Is.InRange(n, 100_000 + n)); + Assert.That(await dist.NextNumber(n, 100_000 + n), Is.InRange(n, 100_000 + n)); } [Test] @@ -49,9 +49,9 @@ namespace FastRngTests.Double public async Task TestRange02Uint() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5, 5, dist), Is.EqualTo(5)); - Assert.That(await rng.NextNumber(0, 0, dist), Is.EqualTo(0)); - Assert.That(await rng.NextNumber(3_000_000_000, 3_000_000_000, dist), Is.EqualTo(3_000_000_000)); + Assert.That(await dist.NextNumber(5, 5), Is.EqualTo(5)); + Assert.That(await dist.NextNumber(0, 0), Is.EqualTo(0)); + Assert.That(await dist.NextNumber(3_000_000_000, 3_000_000_000), Is.EqualTo(3_000_000_000)); } [Test] @@ -60,9 +60,9 @@ namespace FastRngTests.Double public async Task TestRange02Ulong() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5UL, 5, dist), Is.EqualTo(5)); - Assert.That(await rng.NextNumber(0UL, 0, dist), Is.EqualTo(0)); - Assert.That(await rng.NextNumber(3_000_000_000UL, 3_000_000_000, dist), Is.EqualTo(3_000_000_000)); + Assert.That(await dist.NextNumber(5UL, 5), Is.EqualTo(5)); + Assert.That(await dist.NextNumber(0UL, 0), Is.EqualTo(0)); + Assert.That(await dist.NextNumber(3_000_000_000UL, 3_000_000_000), Is.EqualTo(3_000_000_000)); } [Test] @@ -71,9 +71,9 @@ namespace FastRngTests.Double public async Task TestRange02Float() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5f, 5f, dist), Is.EqualTo(5)); - Assert.That(await rng.NextNumber(0f, 0f, dist), Is.EqualTo(0)); - Assert.That(await rng.NextNumber(3e9, 3e9, dist), Is.EqualTo(3e9)); + Assert.That(await dist.NextNumber(5f, 5f), Is.EqualTo(5)); + Assert.That(await dist.NextNumber(0f, 0f), Is.EqualTo(0)); + Assert.That(await dist.NextNumber(3e9, 3e9), Is.EqualTo(3e9)); } [Test] @@ -82,9 +82,9 @@ namespace FastRngTests.Double public async Task TestRange03Uint() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5, 6, dist), Is.InRange(5, 6)); - Assert.That(await rng.NextNumber(0, 1, dist), Is.InRange(0, 1)); - Assert.That(await rng.NextNumber(3_000_000_000, 3_000_000_002, dist), Is.InRange(3_000_000_000, 3_000_000_002)); + Assert.That(await dist.NextNumber(5, 6), Is.InRange(5, 6)); + Assert.That(await dist.NextNumber(0, 1), Is.InRange(0, 1)); + Assert.That(await dist.NextNumber(3_000_000_000, 3_000_000_002), Is.InRange(3_000_000_000, 3_000_000_002)); } [Test] @@ -93,9 +93,9 @@ namespace FastRngTests.Double public async Task TestRange03Ulong() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5UL, 6, dist), Is.InRange(5, 6)); - Assert.That(await rng.NextNumber(0UL, 1, dist), Is.InRange(0, 1)); - Assert.That(await rng.NextNumber(3_000_000_000UL, 3_000_000_002, dist), Is.InRange(3_000_000_000, 3_000_000_002)); + Assert.That(await dist.NextNumber(5UL, 6), Is.InRange(5, 6)); + Assert.That(await dist.NextNumber(0UL, 1), Is.InRange(0, 1)); + Assert.That(await dist.NextNumber(3_000_000_000UL, 3_000_000_002), Is.InRange(3_000_000_000, 3_000_000_002)); } [Test] @@ -104,9 +104,9 @@ namespace FastRngTests.Double public async Task TestRange03Float() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5f, 6, dist), Is.InRange(5, 6)); - Assert.That(await rng.NextNumber(0f, 1, dist), Is.InRange(0, 1)); - Assert.That(await rng.NextNumber(3e9, 3e9+2, dist), Is.InRange(3e9, 3e9+2)); + Assert.That(await dist.NextNumber(5f, 6), Is.InRange(5, 6)); + Assert.That(await dist.NextNumber(0f, 1), Is.InRange(0, 1)); + Assert.That(await dist.NextNumber(3e9, 3e9+2), Is.InRange(3e9, 3e9+2)); } [Test] @@ -115,8 +115,8 @@ namespace FastRngTests.Double public async Task TestRange04Uint() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(10, 1, dist), Is.InRange(1, 10)); - Assert.That(await rng.NextNumber(20, 1, dist), Is.InRange(1, 20)); + Assert.That(await dist.NextNumber(10, 1), Is.InRange(1, 10)); + Assert.That(await dist.NextNumber(20, 1), Is.InRange(1, 20)); } [Test] @@ -125,8 +125,8 @@ namespace FastRngTests.Double public async Task TestRange04Ulong() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(10UL, 1, dist), Is.InRange(1, 10)); - Assert.That(await rng.NextNumber(20UL, 1, dist), Is.InRange(1, 20)); + Assert.That(await dist.NextNumber(10UL, 1), Is.InRange(1, 10)); + Assert.That(await dist.NextNumber(20UL, 1), Is.InRange(1, 20)); } [Test] @@ -135,8 +135,8 @@ namespace FastRngTests.Double public async Task TestRange04Float() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(10.0, 1, dist), Is.InRange(1, 10)); - Assert.That(await rng.NextNumber(20.0, 1, dist), Is.InRange(1, 20)); + Assert.That(await dist.NextNumber(10.0, 1), Is.InRange(1, 10)); + Assert.That(await dist.NextNumber(20.0, 1), Is.InRange(1, 20)); } [Test] @@ -144,8 +144,8 @@ namespace FastRngTests.Double [Category(TestCategories.NORMAL)] public async Task TestStoppingProducers01() { - using var rng2 = new MultiThreadedRng(); - rng2.StopProducer(); + var rng2 = new MultiThreadedRng(); + rng2.Dispose(); var masterToken = new CancellationTokenSource(TimeSpan.FromSeconds(16)).Token; var wasCanceled = false; @@ -170,19 +170,19 @@ namespace FastRngTests.Double Assert.That(wasCanceled, Is.True, "The consumer was not canceled"); var tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); - await rng2.NextNumber(new NormalS02M05(rng2), tokenSource2.Token); + await new NormalS02M05(rng2).NextNumber(tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); - await rng2.NextNumber(-1d, 1d, new NormalS02M05(rng2), tokenSource2.Token); + await new NormalS02M05(rng2).NextNumber(-1d, 1d, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); - await rng2.NextNumber(0u, 6u, new NormalS02M05(rng2), tokenSource2.Token); + await new NormalS02M05(rng2).NextNumber(0u, 6u, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); - await rng2.NextNumber(0ul, 6ul, new NormalS02M05(rng2), tokenSource2.Token); + await new NormalS02M05(rng2).NextNumber(0ul, 6ul, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); } @@ -283,7 +283,7 @@ namespace FastRngTests.Double using var rng2 = new MultiThreadedRng(); var dist = new Uniform(rng2); - Assert.That(await rng2.NextNumber(1, 100_000, dist, token), Is.EqualTo(0)); + Assert.That(await dist.NextNumber(1, 100_000, token), Is.EqualTo(0)); } [Test] diff --git a/FastRngTests/Double/PerformanceTests.cs b/FastRngTests/Double/PerformanceTests.cs index 7f23c98..899d1a3 100644 --- a/FastRngTests/Double/PerformanceTests.cs +++ b/FastRngTests/Double/PerformanceTests.cs @@ -46,7 +46,7 @@ namespace FastRngTests.Double stopwatch.Start(); for (uint n = 0; n < data.Length; n++) - data[n] = await rng.NextNumber(dist); + data[n] = await dist.NextNumber(); stopwatch.Stop(); @@ -65,7 +65,7 @@ namespace FastRngTests.Double stopwatch.Start(); for (uint n = 0; n < data.Length; n++) - data[n] = await rng.NextNumber(dist); + data[n] = await dist.NextNumber(); stopwatch.Stop(); diff --git a/FastRngTests/Float/Distributions/BetaA2B2.cs b/FastRngTests/Float/Distributions/BetaA2B2.cs index 9bcc01a..44ec472 100644 --- a/FastRngTests/Float/Distributions/BetaA2B2.cs +++ b/FastRngTests/Float/Distributions/BetaA2B2.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fqa = new Float.FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.BetaA2B2(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.BetaA2B2(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/BetaA2B5.cs b/FastRngTests/Float/Distributions/BetaA2B5.cs index 4a51d9c..b88bba0 100644 --- a/FastRngTests/Float/Distributions/BetaA2B5.cs +++ b/FastRngTests/Float/Distributions/BetaA2B5.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fqa = new Float.FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.BetaA2B5(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.BetaA2B5(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/BetaA5B2.cs b/FastRngTests/Float/Distributions/BetaA5B2.cs index 15a6f60..306c504 100644 --- a/FastRngTests/Float/Distributions/BetaA5B2.cs +++ b/FastRngTests/Float/Distributions/BetaA5B2.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.BetaA5B2(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.BetaA5B2(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/CauchyLorentzX0.cs b/FastRngTests/Float/Distributions/CauchyLorentzX0.cs index 76b49aa..0b0d2b6 100644 --- a/FastRngTests/Float/Distributions/CauchyLorentzX0.cs +++ b/FastRngTests/Float/Distributions/CauchyLorentzX0.cs @@ -23,7 +23,7 @@ namespace FastRngTests.Float.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -55,7 +55,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); @@ -70,7 +70,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/CauchyLorentzX1.cs b/FastRngTests/Float/Distributions/CauchyLorentzX1.cs index 51856f5..70b63f3 100644 --- a/FastRngTests/Float/Distributions/CauchyLorentzX1.cs +++ b/FastRngTests/Float/Distributions/CauchyLorentzX1.cs @@ -23,7 +23,7 @@ namespace FastRngTests.Float.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -55,7 +55,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); @@ -70,7 +70,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/ChiSquareK1.cs b/FastRngTests/Float/Distributions/ChiSquareK1.cs index 97b5e53..d29d32b 100644 --- a/FastRngTests/Float/Distributions/ChiSquareK1.cs +++ b/FastRngTests/Float/Distributions/ChiSquareK1.cs @@ -21,7 +21,7 @@ namespace FastRngTests.Float.Distributions for (var n = 0; n < 100_000; n++) { - var value = await rng.NextNumber(dist); + var value = await dist.NextNumber(); fqa.CountThis(value); } @@ -55,7 +55,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ChiSquareK1(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -70,7 +70,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ChiSquareK1(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/ChiSquareK10.cs b/FastRngTests/Float/Distributions/ChiSquareK10.cs index cb610ce..304ca89 100644 --- a/FastRngTests/Float/Distributions/ChiSquareK10.cs +++ b/FastRngTests/Float/Distributions/ChiSquareK10.cs @@ -21,7 +21,7 @@ namespace FastRngTests.Float.Distributions for (var n = 0; n < 100_000; n++) { - var value = await rng.NextNumber(dist); + var value = await dist.NextNumber(); fqa.CountThis(value); } @@ -55,7 +55,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ChiSquareK10(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -70,7 +70,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ChiSquareK10(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/ChiSquareK4.cs b/FastRngTests/Float/Distributions/ChiSquareK4.cs index 8f5ce9b..05ae266 100644 --- a/FastRngTests/Float/Distributions/ChiSquareK4.cs +++ b/FastRngTests/Float/Distributions/ChiSquareK4.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ChiSquareK4(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ChiSquareK4(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/ExponentialLa10.cs b/FastRngTests/Float/Distributions/ExponentialLa10.cs index e4eab8c..919cf44 100644 --- a/FastRngTests/Float/Distributions/ExponentialLa10.cs +++ b/FastRngTests/Float/Distributions/ExponentialLa10.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ExponentialLa10(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ExponentialLa10(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/ExponentialLa5.cs b/FastRngTests/Float/Distributions/ExponentialLa5.cs index 307b9cc..ad4b41b 100644 --- a/FastRngTests/Float/Distributions/ExponentialLa5.cs +++ b/FastRngTests/Float/Distributions/ExponentialLa5.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ExponentialLa5(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.ExponentialLa5(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/GammaA5B15.cs b/FastRngTests/Float/Distributions/GammaA5B15.cs index 4be7f92..76e536a 100644 --- a/FastRngTests/Float/Distributions/GammaA5B15.cs +++ b/FastRngTests/Float/Distributions/GammaA5B15.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.GammaA5B15(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.GammaA5B15(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/InverseExponentialLa10.cs b/FastRngTests/Float/Distributions/InverseExponentialLa10.cs index c37e030..b6ac2d5 100644 --- a/FastRngTests/Float/Distributions/InverseExponentialLa10.cs +++ b/FastRngTests/Float/Distributions/InverseExponentialLa10.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.InverseExponentialLa10(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.InverseExponentialLa10(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/InverseExponentialLa5.cs b/FastRngTests/Float/Distributions/InverseExponentialLa5.cs index c927d8f..cb464e6 100644 --- a/FastRngTests/Float/Distributions/InverseExponentialLa5.cs +++ b/FastRngTests/Float/Distributions/InverseExponentialLa5.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fqa = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fqa.CountThis(await rng.NextNumber(dist)); + fqa.CountThis(await dist.NextNumber()); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.InverseExponentialLa5(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.InverseExponentialLa5(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/InverseGammaA3B05.cs b/FastRngTests/Float/Distributions/InverseGammaA3B05.cs index 99756ad..5bdcba9 100644 --- a/FastRngTests/Float/Distributions/InverseGammaA3B05.cs +++ b/FastRngTests/Float/Distributions/InverseGammaA3B05.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.InverseGammaA3B05(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.InverseGammaA3B05(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/LaplaceB01M0.cs b/FastRngTests/Float/Distributions/LaplaceB01M0.cs index 86aadc0..c08295a 100644 --- a/FastRngTests/Float/Distributions/LaplaceB01M0.cs +++ b/FastRngTests/Float/Distributions/LaplaceB01M0.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.LaplaceB01M0(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.LaplaceB01M0(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/LaplaceB01M05.cs b/FastRngTests/Float/Distributions/LaplaceB01M05.cs index 2f37393..50ca09e 100644 --- a/FastRngTests/Float/Distributions/LaplaceB01M05.cs +++ b/FastRngTests/Float/Distributions/LaplaceB01M05.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.LaplaceB01M05(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.LaplaceB01M05(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/LogNormalS1M0.cs b/FastRngTests/Float/Distributions/LogNormalS1M0.cs index 9ce4e90..c578a71 100644 --- a/FastRngTests/Float/Distributions/LogNormalS1M0.cs +++ b/FastRngTests/Float/Distributions/LogNormalS1M0.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.LogNormalS1M0(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.LogNormalS1M0(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/NormalS02M05.cs b/FastRngTests/Float/Distributions/NormalS02M05.cs index 85c9986..75a0274 100644 --- a/FastRngTests/Float/Distributions/NormalS02M05.cs +++ b/FastRngTests/Float/Distributions/NormalS02M05.cs @@ -25,7 +25,7 @@ namespace FastRngTests.Float.Distributions for (var n = 0; n < 100_000; n++) { - var nextNumber = await rng.NextNumber(dist); + var nextNumber = await dist.NextNumber(); stats.Push(nextNumber); fra.CountThis(nextNumber); } @@ -48,7 +48,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.NormalS02M05(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); @@ -63,7 +63,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.NormalS02M05(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/StudentTNu1.cs b/FastRngTests/Float/Distributions/StudentTNu1.cs index 4acd403..215add9 100644 --- a/FastRngTests/Float/Distributions/StudentTNu1.cs +++ b/FastRngTests/Float/Distributions/StudentTNu1.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.StudentTNu1(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.StudentTNu1(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/Distributions/Uniform.cs b/FastRngTests/Float/Distributions/Uniform.cs index a4bf7fb..6b94202 100644 --- a/FastRngTests/Float/Distributions/Uniform.cs +++ b/FastRngTests/Float/Distributions/Uniform.cs @@ -119,7 +119,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.Uniform(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); @@ -134,7 +134,7 @@ namespace FastRngTests.Float.Distributions var samples = new float[1_000]; var dist = new FastRng.Float.Distributions.Uniform(rng); for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); @@ -164,7 +164,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0, 100, dist)]++; + distribution[await dist.NextNumber(0, 100)]++; for (var n = 0; n < distribution.Length - 1; n++) Assert.That(distribution[n], Is.GreaterThan(0)); @@ -180,7 +180,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0UL, 100, dist)]++; + distribution[await dist.NextNumber(0UL, 100)]++; for (var n = 0; n < distribution.Length - 1; n++) Assert.That(distribution[n], Is.GreaterThan(0)); @@ -196,7 +196,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[(uint)MathF.Floor(await rng.NextNumber(0.0f, 100.0f, dist))]++; + distribution[(uint)MathF.Floor(await dist.NextNumber(0.0f, 100.0f))]++; for (var n = 0; n < distribution.Length - 1; n++) Assert.That(distribution[n], Is.GreaterThan(0)); @@ -211,7 +211,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0, 100, dist)]++; + distribution[await dist.NextNumber(0, 100)]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 600)); } @@ -225,7 +225,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0UL, 100, dist)]++; + distribution[await dist.NextNumber(0UL, 100)]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 600)); } @@ -239,7 +239,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 1_000_000; for (var n = 0; n < runs; n++) - distribution[(uint)MathF.Floor(await rng.NextNumber(0.0f, 100.0f, dist))]++; + distribution[(uint)MathF.Floor(await dist.NextNumber(0.0f, 100.0f))]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 600)); } @@ -253,7 +253,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 100_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0, 100, dist)]++; + distribution[await dist.NextNumber(0, 100)]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 6_000)); } @@ -267,7 +267,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 100_000_000; for (var n = 0; n < runs; n++) - distribution[await rng.NextNumber(0UL, 100, dist)]++; + distribution[await dist.NextNumber(0UL, 100)]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 6_000)); } @@ -281,7 +281,7 @@ namespace FastRngTests.Float.Distributions var distribution = new uint[101]; var runs = 100_000_000; for (var n = 0; n < runs; n++) - distribution[(uint)MathF.Floor(await rng.NextNumber(0.0f, 100.0f, dist))]++; + distribution[(uint)MathF.Floor(await dist.NextNumber(0.0f, 100.0f))]++; Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 6_000)); } diff --git a/FastRngTests/Float/Distributions/WeibullK05La1.cs b/FastRngTests/Float/Distributions/WeibullK05La1.cs index 13ba18b..a4db6d7 100644 --- a/FastRngTests/Float/Distributions/WeibullK05La1.cs +++ b/FastRngTests/Float/Distributions/WeibullK05La1.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions var fra = new FrequencyAnalysis(); for (var n = 0; n < 100_000; n++) - fra.CountThis(await rng.NextNumber(dist)); + fra.CountThis(await dist.NextNumber()); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine); @@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.WeibullK05La1(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(-1.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(-1.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max out of range"); @@ -67,7 +67,7 @@ namespace FastRngTests.Float.Distributions var dist = new FastRng.Float.Distributions.WeibullK05La1(rng); var samples = new float[1_000]; for (var n = 0; n < samples.Length; n++) - samples[n] = await rng.NextNumber(0.0f, 1.0f, dist); + samples[n] = await dist.NextNumber(0.0f, 1.0f); Assert.That(samples.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); diff --git a/FastRngTests/Float/MultiThreadedRngTests.cs b/FastRngTests/Float/MultiThreadedRngTests.cs index 6800eaf..59dd0ce 100644 --- a/FastRngTests/Float/MultiThreadedRngTests.cs +++ b/FastRngTests/Float/MultiThreadedRngTests.cs @@ -20,7 +20,7 @@ namespace FastRngTests.Float { var dist = new Uniform(this.rng); for (uint n = 0; n < 1_000_000; n++) - Assert.That(await rng.NextNumber(n, 100_000 + n, dist), Is.InRange(n, 100_000 + n)); + Assert.That(await dist.NextNumber(n, 100_000 + n), Is.InRange(n, 100_000 + n)); } [Test] @@ -30,7 +30,7 @@ namespace FastRngTests.Float { var dist = new Uniform(this.rng); for (ulong n = 0; n < 1_000_000; n++) - Assert.That(await rng.NextNumber(n, 100_000 + n, dist), Is.InRange(n, 100_000 + n)); + Assert.That(await dist.NextNumber(n, 100_000 + n), Is.InRange(n, 100_000 + n)); } [Test] @@ -40,7 +40,7 @@ namespace FastRngTests.Float { var dist = new Uniform(this.rng); for (var n = 0.0f; n < 1e6f; n++) - Assert.That(await rng.NextNumber(n, 100_000 + n, dist), Is.InRange(n, 100_000 + n)); + Assert.That(await dist.NextNumber(n, 100_000 + n), Is.InRange(n, 100_000 + n)); } [Test] @@ -49,9 +49,9 @@ namespace FastRngTests.Float public async Task TestRange02Uint() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5, 5, dist), Is.EqualTo(5)); - Assert.That(await rng.NextNumber(0, 0, dist), Is.EqualTo(0)); - Assert.That(await rng.NextNumber(3_000_000_000, 3_000_000_000, dist), Is.EqualTo(3_000_000_000)); + Assert.That(await dist.NextNumber(5, 5), Is.EqualTo(5)); + Assert.That(await dist.NextNumber(0, 0), Is.EqualTo(0)); + Assert.That(await dist.NextNumber(3_000_000_000, 3_000_000_000), Is.EqualTo(3_000_000_000)); } [Test] @@ -60,9 +60,9 @@ namespace FastRngTests.Float public async Task TestRange02Ulong() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5UL, 5, dist), Is.EqualTo(5)); - Assert.That(await rng.NextNumber(0UL, 0, dist), Is.EqualTo(0)); - Assert.That(await rng.NextNumber(3_000_000_000UL, 3_000_000_000, dist), Is.EqualTo(3_000_000_000)); + Assert.That(await dist.NextNumber(5UL, 5), Is.EqualTo(5)); + Assert.That(await dist.NextNumber(0UL, 0), Is.EqualTo(0)); + Assert.That(await dist.NextNumber(3_000_000_000UL, 3_000_000_000), Is.EqualTo(3_000_000_000)); } [Test] @@ -71,9 +71,9 @@ namespace FastRngTests.Float public async Task TestRange02Float() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5f, 5f, dist), Is.EqualTo(5)); - Assert.That(await rng.NextNumber(0f, 0f, dist), Is.EqualTo(0)); - Assert.That(await rng.NextNumber(3e9f, 3e9f, dist), Is.EqualTo(3e9f)); + Assert.That(await dist.NextNumber(5f, 5f), Is.EqualTo(5)); + Assert.That(await dist.NextNumber(0f, 0f), Is.EqualTo(0)); + Assert.That(await dist.NextNumber(3e9f, 3e9f), Is.EqualTo(3e9f)); } [Test] @@ -82,9 +82,9 @@ namespace FastRngTests.Float public async Task TestRange03Uint() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5, 6, dist), Is.InRange(5, 6)); - Assert.That(await rng.NextNumber(0, 1, dist), Is.InRange(0, 1)); - Assert.That(await rng.NextNumber(3_000_000_000, 3_000_000_002, dist), Is.InRange(3_000_000_000, 3_000_000_002)); + Assert.That(await dist.NextNumber(5, 6), Is.InRange(5, 6)); + Assert.That(await dist.NextNumber(0, 1), Is.InRange(0, 1)); + Assert.That(await dist.NextNumber(3_000_000_000, 3_000_000_002), Is.InRange(3_000_000_000, 3_000_000_002)); } [Test] @@ -93,9 +93,9 @@ namespace FastRngTests.Float public async Task TestRange03Ulong() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5UL, 6, dist), Is.InRange(5, 6)); - Assert.That(await rng.NextNumber(0UL, 1, dist), Is.InRange(0, 1)); - Assert.That(await rng.NextNumber(3_000_000_000UL, 3_000_000_002, dist), Is.InRange(3_000_000_000, 3_000_000_002)); + Assert.That(await dist.NextNumber(5UL, 6), Is.InRange(5, 6)); + Assert.That(await dist.NextNumber(0UL, 1), Is.InRange(0, 1)); + Assert.That(await dist.NextNumber(3_000_000_000UL, 3_000_000_002), Is.InRange(3_000_000_000, 3_000_000_002)); } [Test] @@ -104,9 +104,9 @@ namespace FastRngTests.Float public async Task TestRange03Float() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(5f, 6f, dist), Is.InRange(5f, 6f)); - Assert.That(await rng.NextNumber(0f, 1f, dist), Is.InRange(0f, 1f)); - Assert.That(await rng.NextNumber(3e9f, 3e9f+2f, dist), Is.InRange(3e9f, 3e9f+2f)); + Assert.That(await dist.NextNumber(5f, 6f), Is.InRange(5f, 6f)); + Assert.That(await dist.NextNumber(0f, 1f), Is.InRange(0f, 1f)); + Assert.That(await dist.NextNumber(3e9f, 3e9f+2f), Is.InRange(3e9f, 3e9f+2f)); } [Test] @@ -115,8 +115,8 @@ namespace FastRngTests.Float public async Task TestRange04Uint() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(10, 1, dist), Is.InRange(1, 10)); - Assert.That(await rng.NextNumber(20, 1, dist), Is.InRange(1, 20)); + Assert.That(await dist.NextNumber(10, 1), Is.InRange(1, 10)); + Assert.That(await dist.NextNumber(20, 1), Is.InRange(1, 20)); } [Test] @@ -125,8 +125,8 @@ namespace FastRngTests.Float public async Task TestRange04Ulong() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(10UL, 1, dist), Is.InRange(1, 10)); - Assert.That(await rng.NextNumber(20UL, 1, dist), Is.InRange(1, 20)); + Assert.That(await dist.NextNumber(10UL, 1), Is.InRange(1, 10)); + Assert.That(await dist.NextNumber(20UL, 1), Is.InRange(1, 20)); } [Test] @@ -135,8 +135,8 @@ namespace FastRngTests.Float public async Task TestRange04Float() { var dist = new Uniform(this.rng); - Assert.That(await rng.NextNumber(10.0f, 1f, dist), Is.InRange(1f, 10f)); - Assert.That(await rng.NextNumber(20.0f, 1f, dist), Is.InRange(1f, 20f)); + Assert.That(await dist.NextNumber(10.0f, 1f), Is.InRange(1f, 10f)); + Assert.That(await dist.NextNumber(20.0f, 1f), Is.InRange(1f, 20f)); } [Test] @@ -144,8 +144,8 @@ namespace FastRngTests.Float [Category(TestCategories.NORMAL)] public async Task TestStoppingProducers01() { - using var rng2 = new MultiThreadedRng(); - rng2.StopProducer(); + var rng2 = new MultiThreadedRng(); + rng2.Dispose(); var masterToken = new CancellationTokenSource(TimeSpan.FromSeconds(16)).Token; var wasCanceled = false; @@ -170,19 +170,19 @@ namespace FastRngTests.Float Assert.That(wasCanceled, Is.True, "The consumer was not canceled"); var tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); - await rng2.NextNumber(new NormalS02M05(rng2), tokenSource2.Token); + await new NormalS02M05(rng2).NextNumber(tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); - await rng2.NextNumber(-1f, 1f, new NormalS02M05(rng2), tokenSource2.Token); + await new NormalS02M05(rng2).NextNumber(-1f, 1f, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); - await rng2.NextNumber(0u, 6u, new NormalS02M05(rng2), tokenSource2.Token); + await new NormalS02M05(rng2).NextNumber(0u, 6u, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); - await rng2.NextNumber(0ul, 6ul, new NormalS02M05(rng2), tokenSource2.Token); + await new NormalS02M05(rng2).NextNumber(0ul, 6ul, tokenSource2.Token); Assert.That(tokenSource2.IsCancellationRequested, Is.True); } @@ -283,7 +283,7 @@ namespace FastRngTests.Float using var rng2 = new MultiThreadedRng(); var dist = new Uniform(this.rng); - Assert.That(await rng2.NextNumber(1, 100_000, dist, token), Is.EqualTo(0)); + Assert.That(await dist.NextNumber(1, 100_000, token), Is.EqualTo(0)); } [Test] diff --git a/FastRngTests/Float/PerformanceTests.cs b/FastRngTests/Float/PerformanceTests.cs index bb2b0b6..bf99a11 100644 --- a/FastRngTests/Float/PerformanceTests.cs +++ b/FastRngTests/Float/PerformanceTests.cs @@ -46,11 +46,10 @@ namespace FastRngTests.Float stopwatch.Start(); for (uint n = 0; n < data.Length; n++) - data[n] = await rng.NextNumber(dist); + data[n] = await dist.NextNumber(); stopwatch.Stop(); - rng.StopProducer(); - + TestContext.WriteLine($"Generated 1M normal distributed random numbers in {stopwatch.Elapsed.Minutes} minute(s), {stopwatch.Elapsed.Seconds} second(s), and {stopwatch.Elapsed.Milliseconds} milliseconds."); } @@ -66,7 +65,7 @@ namespace FastRngTests.Float stopwatch.Start(); for (uint n = 0; n < data.Length; n++) - data[n] = await rng.NextNumber(dist); + data[n] = await dist.NextNumber(); stopwatch.Stop();