|
8 | 8 | *****************************************************************************/ |
9 | 9 |
|
10 | 10 | #include "StdInc.h" |
11 | | -#include "time.h" |
| 11 | +#include <random> |
12 | 12 |
|
13 | 13 | // These words are of a maximum length of 10 characters, capitalized, and stripped of whitespace |
14 | | -const char* const CNickGen::m_szAdjectives[] = { |
| 14 | +const char* const szAdjectives[] = { |
15 | 15 | "Aback", "Abaft", "Abandoned", "Abashed", "Aberrant", "Abhorrent", "Abiding", "Abject", "Ablaze", "Able", "Abnormal", |
16 | 16 | "Aboard", "Aboriginal", "Abortive", "Abounding", "Abrasive", "Abrupt", "Absent", "Absorbed", "Absorbing", "Abstracted", "Absurd", |
17 | 17 | "Abundant", "Abusive", "Acceptable", "Accessible", "Accidental", "Accurate", "Acid", "Acidic", "Acoustic", "Acrid", "Actually", |
@@ -109,7 +109,7 @@ const char* const CNickGen::m_szAdjectives[] = { |
109 | 109 | "Worried", "Worthless", "Wrathful", "Wretched", "Wrong", "Wry", |
110 | 110 | }; |
111 | 111 |
|
112 | | -const char* const CNickGen::m_szNouns[] = { |
| 112 | +const char* const szNouns[] = { |
113 | 113 | "Aardvark", "Buffalo", "Alligator", "Ant", "Anteater", "Antelope", "Ape", "Armadillo", "Donkey", "Baboon", "Badger", |
114 | 114 | "Barracuda", "Bat", "Bear", "Beaver", "Bee", "Bison", "Boar", "Bush", "Butterfly", "Camel", "Calf", |
115 | 115 | "Cat", "Kitten", "Cattle", "Chamois", "Cheetah", "Chicken", "Chick", "Chimpanzee", "Infant", "Empress", "Troop", |
@@ -196,10 +196,18 @@ const char* const CNickGen::m_szNouns[] = { |
196 | 196 | "Vampire", "Parasite", "Tramp", "Bum", "Hobo", "Hitchhiker", "Deadbeat", "Acrobat", |
197 | 197 | }; |
198 | 198 |
|
| 199 | +constexpr auto numAdjectives = std::size(szAdjectives); |
| 200 | +constexpr auto numNouns = std::size(szNouns); |
| 201 | +constexpr auto maxNum = 100; |
| 202 | + |
199 | 203 | SString CNickGen::GetRandomNickname() |
200 | 204 | { |
201 | | - srand((unsigned int)time(NULL)); |
202 | | - int iAdjective = rand() % NICKGEN_NUM_ADJECTIVES; |
203 | | - int iNoun = rand() % NICKGEN_NUM_NOUNS; |
204 | | - return SString("%s%s%i", m_szAdjectives[iAdjective], m_szNouns[iNoun], rand() % 100); |
| 205 | + std::random_device rd; |
| 206 | + std::mt19937 gen(rd()); |
| 207 | + |
| 208 | + std::uniform_int_distribution<int> adjectiveDist(0, numAdjectives - 1); |
| 209 | + std::uniform_int_distribution<int> nounDist(0, numNouns - 1); |
| 210 | + std::uniform_int_distribution<int> numDist(0, maxNum); |
| 211 | + |
| 212 | + return SString("%s%s%i", szAdjectives[adjectiveDist(gen)], szNouns[nounDist(gen)], numDist(gen)); |
205 | 213 | } |
0 commit comments