From 23ee9d468486bb1562889f8f52d9b10fac3e6118 Mon Sep 17 00:00:00 2001 From: Thorsten Sommer Date: Sun, 8 Nov 2020 11:57:21 +0100 Subject: [PATCH] Added test to ensure deterministic behaviour --- FastRngTests/Double/MultiThreadedRngTests.cs | 238 +++++++++++++++++++ FastRngTests/Float/MultiThreadedRngTests.cs | 238 +++++++++++++++++++ 2 files changed, 476 insertions(+) diff --git a/FastRngTests/Double/MultiThreadedRngTests.cs b/FastRngTests/Double/MultiThreadedRngTests.cs index eb3423b..ea185a0 100644 --- a/FastRngTests/Double/MultiThreadedRngTests.cs +++ b/FastRngTests/Double/MultiThreadedRngTests.cs @@ -313,5 +313,243 @@ namespace FastRngTests.Double using var rng2 = new MultiThreadedRng(); Assert.That(await rng2.GetUniform(token), Is.NaN); } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic01() + { + using var rng2 = new MultiThreadedRng(16); + + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.12712699).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.5764246).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.06033641).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.6822646).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.61201024).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.17746393).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.33456334).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.96167856).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.12944269).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.64489424).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.109665975).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.18188846).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.36097932).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.48192585).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.1617974).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.24791045).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.43913218).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.3343723).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.9428737).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.55195147).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.027495692).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.9621458).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.55794334).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.69002056).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.86020225).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.88220626).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.68816894).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.8583311).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.003915685).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.83575225).Within(1e-7f)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic02() + { + using var rng2 = new MultiThreadedRng(16); + var dist = new Uniform(rng2); + + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(13)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(58)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(6)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(68)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(61)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(18)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(34)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(96)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(13)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(64)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(19)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(36)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(48)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(17)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(25)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(44)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(34)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(94)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(55)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(96)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(56)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(69)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(86)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(88)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(69)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(85)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(83)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic03() + { + using var rng2 = new MultiThreadedRng(16); + var dist = new CauchyLorentzX0(rng2); + + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(17)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(18)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(14)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(65)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(22)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(37)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(9)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(12)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(10)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(8)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(22)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(20)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(84)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(9)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(19)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(10)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(56)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic01b() + { + using var rng2 = new MultiThreadedRng(16, 362_436_069); + + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.12712699).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.5764246).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.06033641).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.6822646).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.61201024).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.17746393).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.33456334).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.96167856).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.12944269).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.64489424).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.109665975).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.18188846).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.36097932).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.48192585).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.1617974).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.24791045).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.43913218).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.3343723).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.9428737).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.55195147).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.027495692).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.9621458).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.55794334).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.69002056).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.86020225).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.88220626).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.68816894).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.8583311).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.003915685).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.83575225).Within(1e-7f)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic02b() + { + using var rng2 = new MultiThreadedRng(16, 362_436_069); + var dist = new Uniform(rng2); + + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(13)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(58)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(6)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(68)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(61)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(18)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(34)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(96)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(13)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(64)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(19)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(36)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(48)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(17)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(25)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(44)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(34)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(94)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(55)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(96)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(56)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(69)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(86)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(88)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(69)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(85)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(83)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic03b() + { + using var rng2 = new MultiThreadedRng(16, 362_436_069); + var dist = new CauchyLorentzX0(rng2); + + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(17)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(18)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(14)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(65)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(22)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(37)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(9)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(12)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(10)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(8)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(22)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(20)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(84)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(9)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(19)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(10)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(56)); + } } } \ No newline at end of file diff --git a/FastRngTests/Float/MultiThreadedRngTests.cs b/FastRngTests/Float/MultiThreadedRngTests.cs index 19ec49b..7fc0ec3 100644 --- a/FastRngTests/Float/MultiThreadedRngTests.cs +++ b/FastRngTests/Float/MultiThreadedRngTests.cs @@ -313,5 +313,243 @@ namespace FastRngTests.Float using var rng2 = new MultiThreadedRng(); Assert.That(await rng2.GetUniform(token), Is.NaN); } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic01() + { + using var rng2 = new MultiThreadedRng(16); + + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.12712699).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.5764246).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.06033641).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.6822646).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.61201024).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.17746393).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.33456334).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.96167856).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.12944269).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.64489424).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.109665975).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.18188846).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.36097932).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.48192585).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.1617974).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.24791045).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.43913218).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.3343723).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.9428737).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.55195147).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.027495692).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.9621458).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.55794334).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.69002056).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.86020225).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.88220626).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.68816894).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.8583311).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.003915685).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.83575225).Within(1e-7f)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic02() + { + using var rng2 = new MultiThreadedRng(16); + var dist = new Uniform(rng2); + + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(13)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(58)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(6)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(68)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(61)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(18)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(34)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(96)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(13)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(64)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(19)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(36)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(48)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(17)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(25)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(44)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(34)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(94)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(55)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(96)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(56)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(69)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(86)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(88)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(69)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(85)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(83)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic03() + { + using var rng2 = new MultiThreadedRng(16); + var dist = new CauchyLorentzX0(rng2); + + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(17)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(18)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(14)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(65)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(22)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(37)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(9)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(12)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(10)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(8)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(22)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(20)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(84)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(9)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(19)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(10)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(56)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic01b() + { + using var rng2 = new MultiThreadedRng(16, 362_436_069); + + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.12712699).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.5764246).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.06033641).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.6822646).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.61201024).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.17746393).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.33456334).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.96167856).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.12944269).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.64489424).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.109665975).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.18188846).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.36097932).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.48192585).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.1617974).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.24791045).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.43913218).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.3343723).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.9428737).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.55195147).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.027495692).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.9621458).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.55794334).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.69002056).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.86020225).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.88220626).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.68816894).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.8583311).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.003915685).Within(1e-7f)); + Assert.That(await rng2.GetUniform(), Is.EqualTo(0.83575225).Within(1e-7f)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic02b() + { + using var rng2 = new MultiThreadedRng(16, 362_436_069); + var dist = new Uniform(rng2); + + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(13)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(58)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(6)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(68)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(61)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(18)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(34)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(96)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(13)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(64)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(19)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(36)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(48)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(17)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(25)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(44)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(34)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(94)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(55)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(96)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(56)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(69)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(86)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(88)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(69)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(85)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(83)); + } + + [Test] + [Category(TestCategories.COVER)] + [Category(TestCategories.NORMAL)] + public async Task TestDeterministic03b() + { + using var rng2 = new MultiThreadedRng(16, 362_436_069); + var dist = new CauchyLorentzX0(rng2); + + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(17)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(18)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(14)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(65)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(11)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(22)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(37)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(9)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(12)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(10)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(8)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(22)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(3)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(20)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(84)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(9)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(19)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(2)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(1)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(10)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(4)); + Assert.That(await dist.NextNumber(1, 100), Is.EqualTo(56)); + } } } \ No newline at end of file