From a1f4bf7e26416b080bbf92c38895f3110c4cbd61 Mon Sep 17 00:00:00 2001 From: Lpsd <40902730+Lpsd@users.noreply.github.com> Date: Wed, 30 Oct 2024 14:11:50 +0000 Subject: [PATCH 1/3] Improve random nick generation --- Client/core/CNickGen.cpp | 18 +++++++++++------- Client/core/CNickGen.h | 5 ----- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/Client/core/CNickGen.cpp b/Client/core/CNickGen.cpp index a4cb2738e2f..abba90b9378 100644 --- a/Client/core/CNickGen.cpp +++ b/Client/core/CNickGen.cpp @@ -8,10 +8,10 @@ *****************************************************************************/ #include "StdInc.h" -#include "time.h" +#include // These words are of a maximum length of 10 characters, capitalized, and stripped of whitespace -const char* const CNickGen::m_szAdjectives[] = { +const char* const szAdjectives[] = { "Aback", "Abaft", "Abandoned", "Abashed", "Aberrant", "Abhorrent", "Abiding", "Abject", "Ablaze", "Able", "Abnormal", "Aboard", "Aboriginal", "Abortive", "Abounding", "Abrasive", "Abrupt", "Absent", "Absorbed", "Absorbing", "Abstracted", "Absurd", "Abundant", "Abusive", "Acceptable", "Accessible", "Accidental", "Accurate", "Acid", "Acidic", "Acoustic", "Acrid", "Actually", @@ -109,7 +109,7 @@ const char* const CNickGen::m_szAdjectives[] = { "Worried", "Worthless", "Wrathful", "Wretched", "Wrong", "Wry", }; -const char* const CNickGen::m_szNouns[] = { +const char* const szNouns[] = { "Aardvark", "Buffalo", "Alligator", "Ant", "Anteater", "Antelope", "Ape", "Armadillo", "Donkey", "Baboon", "Badger", "Barracuda", "Bat", "Bear", "Beaver", "Bee", "Bison", "Boar", "Bush", "Butterfly", "Camel", "Calf", "Cat", "Kitten", "Cattle", "Chamois", "Cheetah", "Chicken", "Chick", "Chimpanzee", "Infant", "Empress", "Troop", @@ -198,8 +198,12 @@ const char* const CNickGen::m_szNouns[] = { SString CNickGen::GetRandomNickname() { - srand((unsigned int)time(NULL)); - int iAdjective = rand() % NICKGEN_NUM_ADJECTIVES; - int iNoun = rand() % NICKGEN_NUM_NOUNS; - return SString("%s%s%i", m_szAdjectives[iAdjective], m_szNouns[iNoun], rand() % 100); + std::random_device rd; + std::mt19937 gen(rd()); + + std::uniform_int_distribution adjectiveDist(0, std::size(szAdjectives) - 1); + std::uniform_int_distribution nounDist(0, std::size(szNouns) - 1); + std::uniform_int_distribution numDist(0, static_cast(RAND_MAX)); + + return SString("%s%s%i", szAdjectives[adjectiveDist(gen)], szNouns[nounDist(gen)], numDist(gen)); } diff --git a/Client/core/CNickGen.h b/Client/core/CNickGen.h index b98254f01b5..86a36990728 100644 --- a/Client/core/CNickGen.h +++ b/Client/core/CNickGen.h @@ -9,13 +9,8 @@ #pragma once -#define NICKGEN_NUM_ADJECTIVES 1048 -#define NICKGEN_NUM_NOUNS 934 - class CNickGen { public: - static const char* const m_szAdjectives[NICKGEN_NUM_ADJECTIVES]; - static const char* const m_szNouns[NICKGEN_NUM_NOUNS]; static SString GetRandomNickname(); }; From a2d841177125f141725fec25848eb124be4e4951 Mon Sep 17 00:00:00 2001 From: Lpsd <40902730+Lpsd@users.noreply.github.com> Date: Wed, 30 Oct 2024 14:15:58 +0000 Subject: [PATCH 2/3] Change some values to const --- Client/core/CNickGen.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/Client/core/CNickGen.cpp b/Client/core/CNickGen.cpp index abba90b9378..c37649e66f7 100644 --- a/Client/core/CNickGen.cpp +++ b/Client/core/CNickGen.cpp @@ -196,14 +196,18 @@ const char* const szNouns[] = { "Vampire", "Parasite", "Tramp", "Bum", "Hobo", "Hitchhiker", "Deadbeat", "Acrobat", }; +const int numAdjectives = std::size(szAdjectives); +const int numNouns = std::size(szNouns); +const int maxNum = static_cast(RAND_MAX); + SString CNickGen::GetRandomNickname() { std::random_device rd; std::mt19937 gen(rd()); - std::uniform_int_distribution adjectiveDist(0, std::size(szAdjectives) - 1); - std::uniform_int_distribution nounDist(0, std::size(szNouns) - 1); - std::uniform_int_distribution numDist(0, static_cast(RAND_MAX)); + std::uniform_int_distribution adjectiveDist(0, numAdjectives - 1); + std::uniform_int_distribution nounDist(0, numNouns - 1); + std::uniform_int_distribution numDist(0, maxNum); return SString("%s%s%i", szAdjectives[adjectiveDist(gen)], szNouns[nounDist(gen)], numDist(gen)); } From c3c86bf879f1fcb3d467954239ab4972cbae2e17 Mon Sep 17 00:00:00 2001 From: Uladzislau Nikalayevich Date: Tue, 5 Nov 2024 23:47:08 +0300 Subject: [PATCH 3/3] constexpr auto and restore maxNum --- Client/core/CNickGen.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Client/core/CNickGen.cpp b/Client/core/CNickGen.cpp index c37649e66f7..f8775885392 100644 --- a/Client/core/CNickGen.cpp +++ b/Client/core/CNickGen.cpp @@ -196,9 +196,9 @@ const char* const szNouns[] = { "Vampire", "Parasite", "Tramp", "Bum", "Hobo", "Hitchhiker", "Deadbeat", "Acrobat", }; -const int numAdjectives = std::size(szAdjectives); -const int numNouns = std::size(szNouns); -const int maxNum = static_cast(RAND_MAX); +constexpr auto numAdjectives = std::size(szAdjectives); +constexpr auto numNouns = std::size(szNouns); +constexpr auto maxNum = 100; SString CNickGen::GetRandomNickname() {