Switches Random handling to PCG family, specifically for better cross platform predictability.
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2020-05-22 12:37:25 +02:00
parent a458a8da14
commit 28f427fa36
4 changed files with 2638 additions and 26 deletions

View File

@@ -6,32 +6,31 @@
TEST_CASE("Random ints", "[Utilities]") {
auto rand = Arbutils::Random(10);
CHECK(rand.Get() == -982170359);
CHECK(rand.Get() == 1283169405);
CHECK(rand.Get() == 89128932);
CHECK(rand.Get() == 2124247567);
CHECK(rand.Get() == -1573468864);
CHECK(rand.Get() == 1902734705);
CHECK(rand.Get() == -1078879109);
CHECK(rand.Get() == -721935204);
CHECK(rand.Get() == 2141071321);
CHECK(rand.Get() == -1789619491);
CHECK(rand.Get() == 1234817989);
CHECK(rand.Get() == 1171957426);
CHECK(rand.Get() == 275100647);
CHECK(rand.Get() == 1033685688);
CHECK(rand.Get() == 180895192);
CHECK(rand.Get() == 135557292);
CHECK(rand.Get() == 716914271);
CHECK(rand.Get() == 1012211222);
CHECK(rand.Get() == -2109244634);
CHECK(rand.Get() == -1647742638);
}
TEST_CASE("Random ints with limit", "[Utilities]") {
auto rand = Arbutils::Random(10);
CHECK(rand.Get(10) == 7);
CHECK(rand.Get(10) == 2);
CHECK(rand.Get(10) == 2);
CHECK(rand.Get(10) == 0);
CHECK(rand.Get(10) == 4);
CHECK(rand.Get(10) == 6);
CHECK(rand.Get(10) == 4);
CHECK(rand.Get(10) == 7);
CHECK(rand.Get(10) == 8);
CHECK(rand.Get(10) == 4);
CHECK(rand.Get(10) == 2);
CHECK(rand.Get(10) == 0);
CHECK(rand.Get(10) == 0);
CHECK(rand.Get(10) == 1);
CHECK(rand.Get(10) == 2);
CHECK(rand.Get(10) == 5);
CHECK(rand.Get(10) == 6);
CHECK(rand.Get(2) == 0);
CHECK(rand.Get(2) == 0);
CHECK(rand.Get(2) == 0);
CHECK(rand.Get(2) == 1);
@@ -39,21 +38,22 @@ TEST_CASE("Random ints with limit", "[Utilities]") {
CHECK(rand.Get(2) == 0);
CHECK(rand.Get(2) == 0);
CHECK(rand.Get(2) == 0);
CHECK(rand.Get(2) == 1);
CHECK(rand.Get(2) == 0);
}
TEST_CASE("Random ints with upper and bottom", "[Utilities]") {
auto rand = Arbutils::Random(10);
CHECK(rand.Get(10, 30) == 25);
CHECK(rand.Get(10, 30) == 15);
CHECK(rand.Get(10, 30) == 15);
CHECK(rand.Get(10, 30) == 11);
CHECK(rand.Get(10, 30) == 14);
CHECK(rand.Get(10, 30) == 10);
CHECK(rand.Get(10, 30) == 19);
CHECK(rand.Get(10, 30) == 10);
CHECK(rand.Get(10, 30) == 13);
CHECK(rand.Get(10, 30) == 14);
CHECK(rand.Get(10, 30) == 20);
CHECK(rand.Get(10, 30) == 22);
CHECK(rand.Get(10, 30) == 18);
CHECK(rand.Get(10, 30) == 24);
CHECK(rand.Get(10, 30) == 26);
CHECK(rand.Get(10, 30) == 19);
CHECK(rand.Get(10, 30) == 21);
}
TEST_CASE("Random distribution (max 0, min 1)", "[Utilities]") {