| 26 | #include <random> |
| 27 | |
| 28 | Sorcery::Random::Random() { |
| 29 | |
| 30 | // Random Seeding Device |
| 31 | _random = std::mt19937_64(_device()); |
| 32 | |
| 33 | // Populate Ranges |
| 34 | using enum Enums::System::Random; |
| 35 | _range.clear(); |
| 36 | _range[D2] = std::make_tuple(1, 2); |
| 37 | _range[D3] = std::make_tuple(1, 3); |
| 38 | _range[D4] = std::make_tuple(1, 4); |
| 39 | _range[D5] = std::make_tuple(1, 5); |
| 40 | _range[D6] = std::make_tuple(1, 6); |
| 41 | _range[D7] = std::make_tuple(1, 7); |
| 42 | _range[D8] = std::make_tuple(1, 8); |
| 43 | _range[D10] = std::make_tuple(1, 10); |
| 44 | _range[D15] = std::make_tuple(1, 15); |
| 45 | _range[D16] = std::make_tuple(1, 16); |
| 46 | _range[D52] = std::make_tuple(1, 52); |
| 47 | _range[D100] = std::make_tuple(1, 100); |
| 48 | _range[D165] = std::make_tuple(1, 165); |
| 49 | _range[D300] = std::make_tuple(1, 300); |
| 50 | _range[D1000] = std::make_tuple(1, 1000); |
| 51 | _range[D2000] = std::make_tuple(1, 2000); |
| 52 | _range[ZERO_TO_2] = std::make_tuple(0, 2); |
| 53 | _range[ZERO_TO_3] = std::make_tuple(0, 3); |
| 54 | _range[ZERO_TO_4] = std::make_tuple(0, 4); |
| 55 | _range[ZERO_TO_7] = std::make_tuple(0, 7); |
| 56 | _range[ZERO_TO_8] = std::make_tuple(0, 8); |
| 57 | _range[ZERO_TO_14] = std::make_tuple(0, 14); |
| 58 | _range[ZERO_TO_19] = std::make_tuple(0, 19); |
| 59 | _range[ZERO_TO_29] = std::make_tuple(0, 29); |
| 60 | _range[ZERO_TO_34] = std::make_tuple(0, 34); |
| 61 | _range[ZERO_TO_69] = std::make_tuple(0, 69); |
| 62 | _range[ZERO_TO_99] = std::make_tuple(0, 99); |
| 63 | _range[ZERO_TO_100] = std::make_tuple(0, 100); |
| 64 | _range[ZERO_TO_101] = std::make_tuple(0, 101); |
| 65 | _range[ZERO_TO_129] = std::make_tuple(0, 129); |
| 66 | _range[ZERO_TO_299] = std::make_tuple(0, 299); |
| 67 | _range[ZERO_TO_399] = std::make_tuple(0, 399); |
| 68 | _range[ZERO_TO_437] = std::make_tuple(0, 437); |
| 69 | |
| 70 | // Set up the Random Syllables |
| 71 | _sy1 = {"Ab", "Ac", "Ad", "Af", "Agr", "Ast", "As", "Al", "Adw", |
| 72 | "Adr", "Ar", "B", "Br", "C", "Cr", "Ch", "Cad", "D", |
| 73 | "Dr", "Dw", "Ed", "Eth", "Et", "Er", "El", "Eow", "F", |
| 74 | "Fr", "G", "Gr", "Gw", "Gal", "Gl", "H", "Ha", "Ib", |
| 75 | "Jer", "K", "Ka", "Ked", "L", "Loth", "Lar", "Leg", "M", |
| 76 | "Mir", "N", "Nyd", "Ol", "Oc", "On", "P", "Pr", "R", |
| 77 | "Rh", "S", "Sev", "T", "Tr", "Th", "V", "Y", "Z", |
| 78 | "W", "Wic"}; |
| 79 | _sy2 = {"a", "ae", "au", "ao", "are", "ale", "ali", "ay", "ardo", |
| 80 | "e", "ei", "ea", "eri", "era", "ela", "eli", "enda", "erra", |
| 81 | "i", "ia", "ie", "ire", "ira", "ila", "ili", "ira", "igo", |
| 82 | "o", "oa", "oi", "oe", "ore", "u", "y"}; |
| 83 | _sy3 = {"a", "and", "b", "bwyn", "baen", "bard", "c", "ctred", |
| 84 | "cred", "ch", "can", "d", "dan", "don", "der", "dric", |
| 85 | "dfrid", "dus", "f", "g", "gord", "gan", "l", "li", |