Refactored NextNumber into distributions

This commit is contained in:
Thorsten Sommer 2020-11-07 15:46:00 +01:00
parent 44abcc48b6
commit 0f724991cd
58 changed files with 417 additions and 332 deletions

View File

@ -21,5 +21,49 @@ namespace FastRng.Double.Distributions
protected abstract double ShapeFunction(double x); protected abstract double ShapeFunction(double x);
public async ValueTask<double> GetDistributedValue(CancellationToken token = default) => await this.fitter.NextNumber(token); public async ValueTask<double> GetDistributedValue(CancellationToken token = default) => await this.fitter.NextNumber(token);
public async ValueTask<uint> 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<ulong> 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<double> 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<double> NextNumber(CancellationToken cancel = default) => await this.NextNumber(0.0, 1.0, cancel);
} }
} }

View File

@ -6,5 +6,13 @@ namespace FastRng.Double.Distributions
public interface IDistribution public interface IDistribution
{ {
public ValueTask<double> GetDistributedValue(CancellationToken token); public ValueTask<double> GetDistributedValue(CancellationToken token);
public ValueTask<uint> NextNumber(uint rangeStart, uint rangeEnd, CancellationToken cancel = default);
public ValueTask<ulong> NextNumber(ulong rangeStart, ulong rangeEnd, CancellationToken cancel = default);
public ValueTask<double> NextNumber(double rangeStart, double rangeEnd, CancellationToken cancel = default);
public ValueTask<double> NextNumber(CancellationToken cancel = default);
} }
} }

View File

@ -17,5 +17,49 @@ namespace FastRng.Double.Distributions
} }
public async ValueTask<double> GetDistributedValue(CancellationToken token = default) => await this.rng.GetUniform(token); public async ValueTask<double> GetDistributedValue(CancellationToken token = default) => await this.rng.GetUniform(token);
public async ValueTask<uint> 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<ulong> 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<double> 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<double> NextNumber(CancellationToken cancel = default) => await this.NextNumber(0.0, 1.0, cancel);
} }
} }

View File

@ -1,21 +1,12 @@
using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using FastRng.Double.Distributions; using FastRng.Double.Distributions;
namespace FastRng.Double namespace FastRng.Double
{ {
public interface IRandom public interface IRandom : IDisposable
{ {
public ValueTask<double> GetUniform(CancellationToken cancel = default); public ValueTask<double> GetUniform(CancellationToken cancel = default);
public ValueTask<uint> NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default);
public ValueTask<ulong> NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default);
public ValueTask<double> NextNumber(double rangeStart, double rangeEnd, IDistribution distribution, CancellationToken cancel = default);
public ValueTask<double> NextNumber(IDistribution distribution, CancellationToken cancel = default);
public void StopProducer();
} }
} }

View File

@ -299,51 +299,7 @@ namespace FastRng.Double
return double.NaN; return double.NaN;
} }
public async ValueTask<uint> NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default) private void StopProducer() => this.producerTokenSource.Cancel();
{
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<ulong> 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<double> 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<double> NextNumber(IDistribution distribution, CancellationToken cancel = default) => await this.NextNumber(0.0, 1.0, distribution, cancel);
public void StopProducer() => this.producerTokenSource.Cancel();
public void Dispose() => this.StopProducer(); public void Dispose() => this.StopProducer();

View File

@ -52,7 +52,7 @@ namespace FastRng.Double
nextBucket = this.probabilities.Length - 1; nextBucket = this.probabilities.Length - 1;
var threshold = this.probabilities[nextBucket]; 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)) if (double.IsNaN(y))
return y; return y;

View File

@ -21,5 +21,49 @@ namespace FastRng.Float.Distributions
protected abstract float ShapeFunction(float x); protected abstract float ShapeFunction(float x);
public async ValueTask<float> GetDistributedValue(CancellationToken token = default) => await this.fitter.NextNumber(token); public async ValueTask<float> GetDistributedValue(CancellationToken token = default) => await this.fitter.NextNumber(token);
public async ValueTask<uint> 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<ulong> 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<float> 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<float> NextNumber(CancellationToken cancel = default) => await this.NextNumber(0.0f, 1.0f, cancel);
} }
} }

View File

@ -6,5 +6,13 @@ namespace FastRng.Float.Distributions
public interface IDistribution public interface IDistribution
{ {
public ValueTask<float> GetDistributedValue(CancellationToken token); public ValueTask<float> GetDistributedValue(CancellationToken token);
public ValueTask<uint> NextNumber(uint rangeStart, uint rangeEnd, CancellationToken cancel = default);
public ValueTask<ulong> NextNumber(ulong rangeStart, ulong rangeEnd, CancellationToken cancel = default);
public ValueTask<float> NextNumber(float rangeStart, float rangeEnd, CancellationToken cancel = default);
public ValueTask<float> NextNumber(CancellationToken cancel = default);
} }
} }

View File

@ -17,5 +17,49 @@ namespace FastRng.Float.Distributions
} }
public async ValueTask<float> GetDistributedValue(CancellationToken token = default) => await this.rng.GetUniform(token); public async ValueTask<float> GetDistributedValue(CancellationToken token = default) => await this.rng.GetUniform(token);
public async ValueTask<uint> 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<ulong> 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<float> 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<float> NextNumber(CancellationToken cancel = default) => await this.NextNumber(0.0f, 1.0f, cancel);
} }
} }

View File

@ -1,21 +1,12 @@
using System;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using FastRng.Float.Distributions; using FastRng.Float.Distributions;
namespace FastRng.Float namespace FastRng.Float
{ {
public interface IRandom public interface IRandom : IDisposable
{ {
public ValueTask<float> GetUniform(CancellationToken cancel = default); public ValueTask<float> GetUniform(CancellationToken cancel = default);
public ValueTask<uint> NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default);
public ValueTask<ulong> NextNumber(ulong rangeStart, ulong rangeEnd, IDistribution distribution, CancellationToken cancel = default);
public ValueTask<float> NextNumber(float rangeStart, float rangeEnd, IDistribution distribution, CancellationToken cancel = default);
public ValueTask<float> NextNumber(IDistribution distribution, CancellationToken cancel = default);
public void StopProducer();
} }
} }

View File

@ -299,51 +299,7 @@ namespace FastRng.Float
return float.NaN; return float.NaN;
} }
public async ValueTask<uint> NextNumber(uint rangeStart, uint rangeEnd, IDistribution distribution, CancellationToken cancel = default) private void StopProducer() => this.producerTokenSource.Cancel();
{
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<ulong> 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<float> 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<float> NextNumber(IDistribution distribution, CancellationToken cancel = default) => await this.NextNumber(0.0f, 1.0f, distribution, cancel);
public void StopProducer() => this.producerTokenSource.Cancel();
public void Dispose() => this.StopProducer(); public void Dispose() => this.StopProducer();

View File

@ -51,7 +51,7 @@ namespace FastRng.Float
nextBucket = this.probabilities.Length - 1; nextBucket = this.probabilities.Length - 1;
var threshold = this.probabilities[nextBucket]; 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)) if (float.IsNaN(y))
return y; return y;

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var samples = new double[1_000]; var samples = new double[1_000];
var dist = new FastRng.Double.Distributions.BetaA2B2(rng); var dist = new FastRng.Double.Distributions.BetaA2B2(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 samples = new double[1_000];
var dist = new FastRng.Double.Distributions.BetaA2B2(rng); var dist = new FastRng.Double.Distributions.BetaA2B2(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var samples = new double[1_000]; var samples = new double[1_000];
var dist = new FastRng.Double.Distributions.BetaA2B5(rng); var dist = new FastRng.Double.Distributions.BetaA2B5(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 samples = new double[1_000];
var dist = new FastRng.Double.Distributions.BetaA2B5(rng); var dist = new FastRng.Double.Distributions.BetaA2B5(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var samples = new double[1_000]; var samples = new double[1_000];
var dist = new FastRng.Double.Distributions.BetaA5B2(rng); var dist = new FastRng.Double.Distributions.BetaA5B2(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 samples = new double[1_000];
var dist = new FastRng.Double.Distributions.BetaA5B2(rng); var dist = new FastRng.Double.Distributions.BetaA5B2(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -23,7 +23,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -55,7 +55,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng); var dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -23,7 +23,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -55,7 +55,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng); var dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.CauchyLorentzX0(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -21,7 +21,7 @@ namespace FastRngTests.Double.Distributions
for (var n = 0; n < 100_000; n++) for (var n = 0; n < 100_000; n++)
{ {
var value = await rng.NextNumber(dist); var value = await dist.NextNumber();
fqa.CountThis(value); fqa.CountThis(value);
} }
@ -55,7 +55,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.ChiSquareK1(rng); var dist = new FastRng.Double.Distributions.ChiSquareK1(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.ChiSquareK1(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -21,7 +21,7 @@ namespace FastRngTests.Double.Distributions
for (var n = 0; n < 100_000; n++) for (var n = 0; n < 100_000; n++)
{ {
var value = await rng.NextNumber(dist); var value = await dist.NextNumber();
fqa.CountThis(value); fqa.CountThis(value);
} }
@ -55,7 +55,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.ChiSquareK10(rng); var dist = new FastRng.Double.Distributions.ChiSquareK10(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.ChiSquareK10(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.ChiSquareK4(rng); var dist = new FastRng.Double.Distributions.ChiSquareK4(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.ChiSquareK4(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.ExponentialLa10(rng); var dist = new FastRng.Double.Distributions.ExponentialLa10(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.ExponentialLa10(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.ExponentialLa5(rng); var dist = new FastRng.Double.Distributions.ExponentialLa5(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.ExponentialLa5(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.GammaA5B15(rng); var dist = new FastRng.Double.Distributions.GammaA5B15(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.GammaA5B15(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.InverseExponentialLa10(rng); var dist = new FastRng.Double.Distributions.InverseExponentialLa10(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.InverseExponentialLa10(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.InverseExponentialLa5(rng); var dist = new FastRng.Double.Distributions.InverseExponentialLa5(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.InverseExponentialLa5(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.InverseGammaA3B05(rng); var dist = new FastRng.Double.Distributions.InverseGammaA3B05(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.InverseGammaA3B05(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.LaplaceB01M0(rng); var dist = new FastRng.Double.Distributions.LaplaceB01M0(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.LaplaceB01M0(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.LaplaceB01M05(rng); var dist = new FastRng.Double.Distributions.LaplaceB01M05(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.LaplaceB01M05(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.LogNormalS1M0(rng); var dist = new FastRng.Double.Distributions.LogNormalS1M0(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.LogNormalS1M0(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -25,7 +25,7 @@ namespace FastRngTests.Double.Distributions
for (var n = 0; n < 100_000; n++) for (var n = 0; n < 100_000; n++)
{ {
var nextNumber = await rng.NextNumber(dist); var nextNumber = await dist.NextNumber();
stats.Push(nextNumber); stats.Push(nextNumber);
fra.CountThis(nextNumber); fra.CountThis(nextNumber);
} }
@ -48,7 +48,7 @@ namespace FastRngTests.Double.Distributions
var samples = new double[1_000]; var samples = new double[1_000];
var dist = new FastRng.Double.Distributions.NormalS02M05(rng); var dist = new FastRng.Double.Distributions.NormalS02M05(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 samples = new double[1_000];
var dist = new FastRng.Double.Distributions.NormalS02M05(rng); var dist = new FastRng.Double.Distributions.NormalS02M05(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.StudentTNu1(rng); var dist = new FastRng.Double.Distributions.StudentTNu1(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.StudentTNu1(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -119,7 +119,7 @@ namespace FastRngTests.Double.Distributions
using var rng = new MultiThreadedRng(); using var rng = new MultiThreadedRng();
var dist = new FastRng.Double.Distributions.Uniform(rng); var dist = new FastRng.Double.Distributions.Uniform(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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(); using var rng = new MultiThreadedRng();
var dist = new FastRng.Double.Distributions.Uniform(rng); var dist = new FastRng.Double.Distributions.Uniform(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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++) for (var n = 0; n < distribution.Length - 1; n++)
Assert.That(distribution[n], Is.GreaterThan(0)); Assert.That(distribution[n], Is.GreaterThan(0));
@ -180,7 +180,7 @@ namespace FastRngTests.Double.Distributions
var distribution = new uint[101]; var distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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++) for (var n = 0; n < distribution.Length - 1; n++)
Assert.That(distribution[n], Is.GreaterThan(0)); Assert.That(distribution[n], Is.GreaterThan(0));
@ -196,7 +196,7 @@ namespace FastRngTests.Double.Distributions
var distribution = new uint[101]; var distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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++) for (var n = 0; n < distribution.Length - 1; n++)
Assert.That(distribution[n], Is.GreaterThan(0)); Assert.That(distribution[n], Is.GreaterThan(0));
@ -211,7 +211,7 @@ namespace FastRngTests.Double.Distributions
var distribution = new uint[101]; var distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 100_000_000; var runs = 100_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 100_000_000; var runs = 100_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 100_000_000; var runs = 100_000_000;
for (var n = 0; n < runs; n++) 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)); Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 6_000));
} }

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Double.Distributions
var dist = new FastRng.Double.Distributions.WeibullK05La1(rng); var dist = new FastRng.Double.Distributions.WeibullK05La1(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max 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 dist = new FastRng.Double.Distributions.WeibullK05La1(rng);
var samples = new double[1_000]; var samples = new double[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Double
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
for (uint n = 0; n < 1_000_000; n++) 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] [Test]
@ -30,7 +30,7 @@ namespace FastRngTests.Double
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
for (ulong n = 0; n < 1_000_000; n++) 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] [Test]
@ -40,7 +40,7 @@ namespace FastRngTests.Double
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
for (var n = 0.0; n < 1e6; n++) 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] [Test]
@ -49,9 +49,9 @@ namespace FastRngTests.Double
public async Task TestRange02Uint() public async Task TestRange02Uint()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5, 5, dist), Is.EqualTo(5)); Assert.That(await dist.NextNumber(5, 5), Is.EqualTo(5));
Assert.That(await rng.NextNumber(0, 0, dist), Is.EqualTo(0)); Assert.That(await dist.NextNumber(0, 0), 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(3_000_000_000, 3_000_000_000), Is.EqualTo(3_000_000_000));
} }
[Test] [Test]
@ -60,9 +60,9 @@ namespace FastRngTests.Double
public async Task TestRange02Ulong() public async Task TestRange02Ulong()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5UL, 5, dist), Is.EqualTo(5)); Assert.That(await dist.NextNumber(5UL, 5), Is.EqualTo(5));
Assert.That(await rng.NextNumber(0UL, 0, dist), Is.EqualTo(0)); Assert.That(await dist.NextNumber(0UL, 0), 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(3_000_000_000UL, 3_000_000_000), Is.EqualTo(3_000_000_000));
} }
[Test] [Test]
@ -71,9 +71,9 @@ namespace FastRngTests.Double
public async Task TestRange02Float() public async Task TestRange02Float()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5f, 5f, dist), Is.EqualTo(5)); Assert.That(await dist.NextNumber(5f, 5f), Is.EqualTo(5));
Assert.That(await rng.NextNumber(0f, 0f, dist), Is.EqualTo(0)); Assert.That(await dist.NextNumber(0f, 0f), Is.EqualTo(0));
Assert.That(await rng.NextNumber(3e9, 3e9, dist), Is.EqualTo(3e9)); Assert.That(await dist.NextNumber(3e9, 3e9), Is.EqualTo(3e9));
} }
[Test] [Test]
@ -82,9 +82,9 @@ namespace FastRngTests.Double
public async Task TestRange03Uint() public async Task TestRange03Uint()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5, 6, dist), Is.InRange(5, 6)); Assert.That(await dist.NextNumber(5, 6), Is.InRange(5, 6));
Assert.That(await rng.NextNumber(0, 1, dist), Is.InRange(0, 1)); Assert.That(await dist.NextNumber(0, 1), 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(3_000_000_000, 3_000_000_002), Is.InRange(3_000_000_000, 3_000_000_002));
} }
[Test] [Test]
@ -93,9 +93,9 @@ namespace FastRngTests.Double
public async Task TestRange03Ulong() public async Task TestRange03Ulong()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5UL, 6, dist), Is.InRange(5, 6)); Assert.That(await dist.NextNumber(5UL, 6), Is.InRange(5, 6));
Assert.That(await rng.NextNumber(0UL, 1, dist), Is.InRange(0, 1)); Assert.That(await dist.NextNumber(0UL, 1), 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(3_000_000_000UL, 3_000_000_002), Is.InRange(3_000_000_000, 3_000_000_002));
} }
[Test] [Test]
@ -104,9 +104,9 @@ namespace FastRngTests.Double
public async Task TestRange03Float() public async Task TestRange03Float()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5f, 6, dist), Is.InRange(5, 6)); Assert.That(await dist.NextNumber(5f, 6), Is.InRange(5, 6));
Assert.That(await rng.NextNumber(0f, 1, dist), Is.InRange(0, 1)); Assert.That(await dist.NextNumber(0f, 1), Is.InRange(0, 1));
Assert.That(await rng.NextNumber(3e9, 3e9+2, dist), Is.InRange(3e9, 3e9+2)); Assert.That(await dist.NextNumber(3e9, 3e9+2), Is.InRange(3e9, 3e9+2));
} }
[Test] [Test]
@ -115,8 +115,8 @@ namespace FastRngTests.Double
public async Task TestRange04Uint() public async Task TestRange04Uint()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(10, 1, dist), Is.InRange(1, 10)); Assert.That(await dist.NextNumber(10, 1), Is.InRange(1, 10));
Assert.That(await rng.NextNumber(20, 1, dist), Is.InRange(1, 20)); Assert.That(await dist.NextNumber(20, 1), Is.InRange(1, 20));
} }
[Test] [Test]
@ -125,8 +125,8 @@ namespace FastRngTests.Double
public async Task TestRange04Ulong() public async Task TestRange04Ulong()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(10UL, 1, dist), Is.InRange(1, 10)); Assert.That(await dist.NextNumber(10UL, 1), Is.InRange(1, 10));
Assert.That(await rng.NextNumber(20UL, 1, dist), Is.InRange(1, 20)); Assert.That(await dist.NextNumber(20UL, 1), Is.InRange(1, 20));
} }
[Test] [Test]
@ -135,8 +135,8 @@ namespace FastRngTests.Double
public async Task TestRange04Float() public async Task TestRange04Float()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(10.0, 1, dist), Is.InRange(1, 10)); Assert.That(await dist.NextNumber(10.0, 1), Is.InRange(1, 10));
Assert.That(await rng.NextNumber(20.0, 1, dist), Is.InRange(1, 20)); Assert.That(await dist.NextNumber(20.0, 1), Is.InRange(1, 20));
} }
[Test] [Test]
@ -144,8 +144,8 @@ namespace FastRngTests.Double
[Category(TestCategories.NORMAL)] [Category(TestCategories.NORMAL)]
public async Task TestStoppingProducers01() public async Task TestStoppingProducers01()
{ {
using var rng2 = new MultiThreadedRng(); var rng2 = new MultiThreadedRng();
rng2.StopProducer(); rng2.Dispose();
var masterToken = new CancellationTokenSource(TimeSpan.FromSeconds(16)).Token; var masterToken = new CancellationTokenSource(TimeSpan.FromSeconds(16)).Token;
var wasCanceled = false; var wasCanceled = false;
@ -170,19 +170,19 @@ namespace FastRngTests.Double
Assert.That(wasCanceled, Is.True, "The consumer was not canceled"); Assert.That(wasCanceled, Is.True, "The consumer was not canceled");
var tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); 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); Assert.That(tokenSource2.IsCancellationRequested, Is.True);
tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); 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); Assert.That(tokenSource2.IsCancellationRequested, Is.True);
tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); 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); Assert.That(tokenSource2.IsCancellationRequested, Is.True);
tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); 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); Assert.That(tokenSource2.IsCancellationRequested, Is.True);
} }
@ -283,7 +283,7 @@ namespace FastRngTests.Double
using var rng2 = new MultiThreadedRng(); using var rng2 = new MultiThreadedRng();
var dist = new Uniform(rng2); 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] [Test]

View File

@ -46,7 +46,7 @@ namespace FastRngTests.Double
stopwatch.Start(); stopwatch.Start();
for (uint n = 0; n < data.Length; n++) for (uint n = 0; n < data.Length; n++)
data[n] = await rng.NextNumber(dist); data[n] = await dist.NextNumber();
stopwatch.Stop(); stopwatch.Stop();
@ -65,7 +65,7 @@ namespace FastRngTests.Double
stopwatch.Start(); stopwatch.Start();
for (uint n = 0; n < data.Length; n++) for (uint n = 0; n < data.Length; n++)
data[n] = await rng.NextNumber(dist); data[n] = await dist.NextNumber();
stopwatch.Stop(); stopwatch.Stop();

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new Float.FrequencyAnalysis(); var fqa = new Float.FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var samples = new float[1_000]; var samples = new float[1_000];
var dist = new FastRng.Float.Distributions.BetaA2B2(rng); var dist = new FastRng.Float.Distributions.BetaA2B2(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 samples = new float[1_000];
var dist = new FastRng.Float.Distributions.BetaA2B2(rng); var dist = new FastRng.Float.Distributions.BetaA2B2(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new Float.FrequencyAnalysis(); var fqa = new Float.FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var samples = new float[1_000]; var samples = new float[1_000];
var dist = new FastRng.Float.Distributions.BetaA2B5(rng); var dist = new FastRng.Float.Distributions.BetaA2B5(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 samples = new float[1_000];
var dist = new FastRng.Float.Distributions.BetaA2B5(rng); var dist = new FastRng.Float.Distributions.BetaA2B5(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var samples = new float[1_000]; var samples = new float[1_000];
var dist = new FastRng.Float.Distributions.BetaA5B2(rng); var dist = new FastRng.Float.Distributions.BetaA5B2(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 samples = new float[1_000];
var dist = new FastRng.Float.Distributions.BetaA5B2(rng); var dist = new FastRng.Float.Distributions.BetaA5B2(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -23,7 +23,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -55,7 +55,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng); var dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -23,7 +23,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -55,7 +55,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng); var dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.CauchyLorentzX0(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -21,7 +21,7 @@ namespace FastRngTests.Float.Distributions
for (var n = 0; n < 100_000; n++) for (var n = 0; n < 100_000; n++)
{ {
var value = await rng.NextNumber(dist); var value = await dist.NextNumber();
fqa.CountThis(value); fqa.CountThis(value);
} }
@ -55,7 +55,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.ChiSquareK1(rng); var dist = new FastRng.Float.Distributions.ChiSquareK1(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.ChiSquareK1(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -21,7 +21,7 @@ namespace FastRngTests.Float.Distributions
for (var n = 0; n < 100_000; n++) for (var n = 0; n < 100_000; n++)
{ {
var value = await rng.NextNumber(dist); var value = await dist.NextNumber();
fqa.CountThis(value); fqa.CountThis(value);
} }
@ -55,7 +55,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.ChiSquareK10(rng); var dist = new FastRng.Float.Distributions.ChiSquareK10(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.ChiSquareK10(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.ChiSquareK4(rng); var dist = new FastRng.Float.Distributions.ChiSquareK4(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.ChiSquareK4(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.ExponentialLa10(rng); var dist = new FastRng.Float.Distributions.ExponentialLa10(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.ExponentialLa10(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.ExponentialLa5(rng); var dist = new FastRng.Float.Distributions.ExponentialLa5(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.ExponentialLa5(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.GammaA5B15(rng); var dist = new FastRng.Float.Distributions.GammaA5B15(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.GammaA5B15(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.InverseExponentialLa10(rng); var dist = new FastRng.Float.Distributions.InverseExponentialLa10(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.InverseExponentialLa10(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fqa = new FrequencyAnalysis(); var fqa = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fqa.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.InverseExponentialLa5(rng); var dist = new FastRng.Float.Distributions.InverseExponentialLa5(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.InverseExponentialLa5(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.InverseGammaA3B05(rng); var dist = new FastRng.Float.Distributions.InverseGammaA3B05(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.InverseGammaA3B05(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.LaplaceB01M0(rng); var dist = new FastRng.Float.Distributions.LaplaceB01M0(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.LaplaceB01M0(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.LaplaceB01M05(rng); var dist = new FastRng.Float.Distributions.LaplaceB01M05(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.LaplaceB01M05(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.LogNormalS1M0(rng); var dist = new FastRng.Float.Distributions.LogNormalS1M0(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.LogNormalS1M0(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -25,7 +25,7 @@ namespace FastRngTests.Float.Distributions
for (var n = 0; n < 100_000; n++) for (var n = 0; n < 100_000; n++)
{ {
var nextNumber = await rng.NextNumber(dist); var nextNumber = await dist.NextNumber();
stats.Push(nextNumber); stats.Push(nextNumber);
fra.CountThis(nextNumber); fra.CountThis(nextNumber);
} }
@ -48,7 +48,7 @@ namespace FastRngTests.Float.Distributions
var samples = new float[1_000]; var samples = new float[1_000];
var dist = new FastRng.Float.Distributions.NormalS02M05(rng); var dist = new FastRng.Float.Distributions.NormalS02M05(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 samples = new float[1_000];
var dist = new FastRng.Float.Distributions.NormalS02M05(rng); var dist = new FastRng.Float.Distributions.NormalS02M05(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.StudentTNu1(rng); var dist = new FastRng.Float.Distributions.StudentTNu1(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.StudentTNu1(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -119,7 +119,7 @@ namespace FastRngTests.Float.Distributions
var samples = new float[1_000]; var samples = new float[1_000];
var dist = new FastRng.Float.Distributions.Uniform(rng); var dist = new FastRng.Float.Distributions.Uniform(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 samples = new float[1_000];
var dist = new FastRng.Float.Distributions.Uniform(rng); var dist = new FastRng.Float.Distributions.Uniform(rng);
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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++) for (var n = 0; n < distribution.Length - 1; n++)
Assert.That(distribution[n], Is.GreaterThan(0)); Assert.That(distribution[n], Is.GreaterThan(0));
@ -180,7 +180,7 @@ namespace FastRngTests.Float.Distributions
var distribution = new uint[101]; var distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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++) for (var n = 0; n < distribution.Length - 1; n++)
Assert.That(distribution[n], Is.GreaterThan(0)); Assert.That(distribution[n], Is.GreaterThan(0));
@ -196,7 +196,7 @@ namespace FastRngTests.Float.Distributions
var distribution = new uint[101]; var distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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++) for (var n = 0; n < distribution.Length - 1; n++)
Assert.That(distribution[n], Is.GreaterThan(0)); Assert.That(distribution[n], Is.GreaterThan(0));
@ -211,7 +211,7 @@ namespace FastRngTests.Float.Distributions
var distribution = new uint[101]; var distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 1_000_000; var runs = 1_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 100_000_000; var runs = 100_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 100_000_000; var runs = 100_000_000;
for (var n = 0; n < runs; n++) 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)); 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 distribution = new uint[101];
var runs = 100_000_000; var runs = 100_000_000;
for (var n = 0; n < runs; n++) 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)); Assert.That(distribution[..^1].Max() - distribution[..^1].Min(), Is.InRange(0, 6_000));
} }

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float.Distributions
var fra = new FrequencyAnalysis(); var fra = new FrequencyAnalysis();
for (var n = 0; n < 100_000; n++) 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); var result = fra.NormalizeAndPlotEvents(TestContext.WriteLine);
@ -52,7 +52,7 @@ namespace FastRngTests.Float.Distributions
var dist = new FastRng.Float.Distributions.WeibullK05La1(rng); var dist = new FastRng.Float.Distributions.WeibullK05La1(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(-1.0f), "Min out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max 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 dist = new FastRng.Float.Distributions.WeibullK05La1(rng);
var samples = new float[1_000]; var samples = new float[1_000];
for (var n = 0; n < samples.Length; n++) 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.Min(), Is.GreaterThanOrEqualTo(0.0f), "Min is out of range");
Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range"); Assert.That(samples.Max(), Is.LessThanOrEqualTo(1.0f), "Max is out of range");

View File

@ -20,7 +20,7 @@ namespace FastRngTests.Float
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
for (uint n = 0; n < 1_000_000; n++) 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] [Test]
@ -30,7 +30,7 @@ namespace FastRngTests.Float
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
for (ulong n = 0; n < 1_000_000; n++) 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] [Test]
@ -40,7 +40,7 @@ namespace FastRngTests.Float
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
for (var n = 0.0f; n < 1e6f; n++) 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] [Test]
@ -49,9 +49,9 @@ namespace FastRngTests.Float
public async Task TestRange02Uint() public async Task TestRange02Uint()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5, 5, dist), Is.EqualTo(5)); Assert.That(await dist.NextNumber(5, 5), Is.EqualTo(5));
Assert.That(await rng.NextNumber(0, 0, dist), Is.EqualTo(0)); Assert.That(await dist.NextNumber(0, 0), 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(3_000_000_000, 3_000_000_000), Is.EqualTo(3_000_000_000));
} }
[Test] [Test]
@ -60,9 +60,9 @@ namespace FastRngTests.Float
public async Task TestRange02Ulong() public async Task TestRange02Ulong()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5UL, 5, dist), Is.EqualTo(5)); Assert.That(await dist.NextNumber(5UL, 5), Is.EqualTo(5));
Assert.That(await rng.NextNumber(0UL, 0, dist), Is.EqualTo(0)); Assert.That(await dist.NextNumber(0UL, 0), 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(3_000_000_000UL, 3_000_000_000), Is.EqualTo(3_000_000_000));
} }
[Test] [Test]
@ -71,9 +71,9 @@ namespace FastRngTests.Float
public async Task TestRange02Float() public async Task TestRange02Float()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5f, 5f, dist), Is.EqualTo(5)); Assert.That(await dist.NextNumber(5f, 5f), Is.EqualTo(5));
Assert.That(await rng.NextNumber(0f, 0f, dist), Is.EqualTo(0)); Assert.That(await dist.NextNumber(0f, 0f), Is.EqualTo(0));
Assert.That(await rng.NextNumber(3e9f, 3e9f, dist), Is.EqualTo(3e9f)); Assert.That(await dist.NextNumber(3e9f, 3e9f), Is.EqualTo(3e9f));
} }
[Test] [Test]
@ -82,9 +82,9 @@ namespace FastRngTests.Float
public async Task TestRange03Uint() public async Task TestRange03Uint()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5, 6, dist), Is.InRange(5, 6)); Assert.That(await dist.NextNumber(5, 6), Is.InRange(5, 6));
Assert.That(await rng.NextNumber(0, 1, dist), Is.InRange(0, 1)); Assert.That(await dist.NextNumber(0, 1), 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(3_000_000_000, 3_000_000_002), Is.InRange(3_000_000_000, 3_000_000_002));
} }
[Test] [Test]
@ -93,9 +93,9 @@ namespace FastRngTests.Float
public async Task TestRange03Ulong() public async Task TestRange03Ulong()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5UL, 6, dist), Is.InRange(5, 6)); Assert.That(await dist.NextNumber(5UL, 6), Is.InRange(5, 6));
Assert.That(await rng.NextNumber(0UL, 1, dist), Is.InRange(0, 1)); Assert.That(await dist.NextNumber(0UL, 1), 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(3_000_000_000UL, 3_000_000_002), Is.InRange(3_000_000_000, 3_000_000_002));
} }
[Test] [Test]
@ -104,9 +104,9 @@ namespace FastRngTests.Float
public async Task TestRange03Float() public async Task TestRange03Float()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(5f, 6f, dist), Is.InRange(5f, 6f)); Assert.That(await dist.NextNumber(5f, 6f), Is.InRange(5f, 6f));
Assert.That(await rng.NextNumber(0f, 1f, dist), Is.InRange(0f, 1f)); Assert.That(await dist.NextNumber(0f, 1f), Is.InRange(0f, 1f));
Assert.That(await rng.NextNumber(3e9f, 3e9f+2f, dist), Is.InRange(3e9f, 3e9f+2f)); Assert.That(await dist.NextNumber(3e9f, 3e9f+2f), Is.InRange(3e9f, 3e9f+2f));
} }
[Test] [Test]
@ -115,8 +115,8 @@ namespace FastRngTests.Float
public async Task TestRange04Uint() public async Task TestRange04Uint()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(10, 1, dist), Is.InRange(1, 10)); Assert.That(await dist.NextNumber(10, 1), Is.InRange(1, 10));
Assert.That(await rng.NextNumber(20, 1, dist), Is.InRange(1, 20)); Assert.That(await dist.NextNumber(20, 1), Is.InRange(1, 20));
} }
[Test] [Test]
@ -125,8 +125,8 @@ namespace FastRngTests.Float
public async Task TestRange04Ulong() public async Task TestRange04Ulong()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(10UL, 1, dist), Is.InRange(1, 10)); Assert.That(await dist.NextNumber(10UL, 1), Is.InRange(1, 10));
Assert.That(await rng.NextNumber(20UL, 1, dist), Is.InRange(1, 20)); Assert.That(await dist.NextNumber(20UL, 1), Is.InRange(1, 20));
} }
[Test] [Test]
@ -135,8 +135,8 @@ namespace FastRngTests.Float
public async Task TestRange04Float() public async Task TestRange04Float()
{ {
var dist = new Uniform(this.rng); var dist = new Uniform(this.rng);
Assert.That(await rng.NextNumber(10.0f, 1f, dist), Is.InRange(1f, 10f)); Assert.That(await dist.NextNumber(10.0f, 1f), Is.InRange(1f, 10f));
Assert.That(await rng.NextNumber(20.0f, 1f, dist), Is.InRange(1f, 20f)); Assert.That(await dist.NextNumber(20.0f, 1f), Is.InRange(1f, 20f));
} }
[Test] [Test]
@ -144,8 +144,8 @@ namespace FastRngTests.Float
[Category(TestCategories.NORMAL)] [Category(TestCategories.NORMAL)]
public async Task TestStoppingProducers01() public async Task TestStoppingProducers01()
{ {
using var rng2 = new MultiThreadedRng(); var rng2 = new MultiThreadedRng();
rng2.StopProducer(); rng2.Dispose();
var masterToken = new CancellationTokenSource(TimeSpan.FromSeconds(16)).Token; var masterToken = new CancellationTokenSource(TimeSpan.FromSeconds(16)).Token;
var wasCanceled = false; var wasCanceled = false;
@ -170,19 +170,19 @@ namespace FastRngTests.Float
Assert.That(wasCanceled, Is.True, "The consumer was not canceled"); Assert.That(wasCanceled, Is.True, "The consumer was not canceled");
var tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); 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); Assert.That(tokenSource2.IsCancellationRequested, Is.True);
tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); 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); Assert.That(tokenSource2.IsCancellationRequested, Is.True);
tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); 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); Assert.That(tokenSource2.IsCancellationRequested, Is.True);
tokenSource2 = new CancellationTokenSource(TimeSpan.FromSeconds(3)); 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); Assert.That(tokenSource2.IsCancellationRequested, Is.True);
} }
@ -283,7 +283,7 @@ namespace FastRngTests.Float
using var rng2 = new MultiThreadedRng(); using var rng2 = new MultiThreadedRng();
var dist = new Uniform(this.rng); 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] [Test]

View File

@ -46,10 +46,9 @@ namespace FastRngTests.Float
stopwatch.Start(); stopwatch.Start();
for (uint n = 0; n < data.Length; n++) for (uint n = 0; n < data.Length; n++)
data[n] = await rng.NextNumber(dist); data[n] = await dist.NextNumber();
stopwatch.Stop(); 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."); 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(); stopwatch.Start();
for (uint n = 0; n < data.Length; n++) for (uint n = 0; n < data.Length; n++)
data[n] = await rng.NextNumber(dist); data[n] = await dist.NextNumber();
stopwatch.Stop(); stopwatch.Stop();