Fix invalid-too-large numbers being generated
This commit is contained in:
parent
cea1bb5248
commit
6db258f59f
2 changed files with 14 additions and 3 deletions
2
Makefile
2
Makefile
|
@ -1,6 +1,6 @@
|
|||
COMMON_CXXFLAGS = -Wall -Wextra -Wpedantic -std=c++20
|
||||
ifdef DEBUG
|
||||
CXXFLAGS = -O0 -g ${COMMON_CXXFLAGS}
|
||||
CXXFLAGS = -Og -g ${COMMON_CXXFLAGS}
|
||||
else
|
||||
CXXFLAGS = -O3 ${COMMON_CXXFLAGS}
|
||||
endif
|
||||
|
|
15
src/main.cpp
15
src/main.cpp
|
@ -403,8 +403,19 @@ int main(int argc, char **argv) {
|
|||
{
|
||||
std::default_random_engine r_eng(std::chrono::steady_clock::now().time_since_epoch().count());
|
||||
if(!isAlt && randomizeDigits) {
|
||||
std::uniform_int_distribution<unsigned int> d_dist(1, digits);
|
||||
digits = d_dist(r_eng);
|
||||
unsigned int min_digits = 0;
|
||||
for (unsigned long long min_copy = min; min_copy > 0; min_copy /= 10) {
|
||||
++min_digits;
|
||||
}
|
||||
if (min_digits == 0) {
|
||||
min_digits = 1;
|
||||
}
|
||||
if (min_digits < digits) {
|
||||
std::uniform_int_distribution<unsigned int> d_dist(min_digits, digits);
|
||||
digits = d_dist(r_eng);
|
||||
} else {
|
||||
digits = min_digits;
|
||||
}
|
||||
}
|
||||
std::uniform_int_distribution<unsigned long long> r_dist(
|
||||
min,
|
||||
|
|
Loading…
Reference in a new issue