Refactored NextNumber into distributions
This commit is contained in:
parent
44abcc48b6
commit
0f724991cd
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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();
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -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();
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
|
@ -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]
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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");
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
|
@ -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]
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user