feat: Added optional param for seed
This commit is contained in:
		@@ -1,3 +1,3 @@
 | 
				
			|||||||
#pragma once
 | 
					#pragma once
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void generate(short min_char_count, short max_char_count, short min_num_count, short max_num_count, int count);
 | 
					void generate(short min_char_count, short max_char_count, short min_num_count, short max_num_count, int count, std::string seed);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,9 +2,19 @@
 | 
				
			|||||||
#include <random>
 | 
					#include <random>
 | 
				
			||||||
#include <chrono>
 | 
					#include <chrono>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void generate(short min_char_count, short max_char_count, short min_num_count, short max_num_count, int count)
 | 
					void generate(short min_char_count, short max_char_count, short min_num_count, short max_num_count, int count, std::string seed)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	std::mt19937 engine(std::chrono::system_clock::now().time_since_epoch().count());
 | 
						std::mt19937 engine;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if(seed != "")
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							std::seed_seq seq(seed.begin(),seed.end());
 | 
				
			||||||
 | 
							engine.seed(seq);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						else
 | 
				
			||||||
 | 
						{
 | 
				
			||||||
 | 
							engine.seed(std::chrono::system_clock::now().time_since_epoch().count());
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	std::uniform_int_distribution<short> char_count_distribution(min_char_count, max_char_count);
 | 
						std::uniform_int_distribution<short> char_count_distribution(min_char_count, max_char_count);
 | 
				
			||||||
	std::uniform_int_distribution<char> char_distribution('a', 'z');
 | 
						std::uniform_int_distribution<char> char_distribution('a', 'z');
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ int main(int argc, char** argv)
 | 
				
			|||||||
		("min-num", "The minimum number of digits", cxxopts::value<short>()->default_value("0"))
 | 
							("min-num", "The minimum number of digits", cxxopts::value<short>()->default_value("0"))
 | 
				
			||||||
		("max-num", "The maximum number of digits", cxxopts::value<short>()->default_value("4"))
 | 
							("max-num", "The maximum number of digits", cxxopts::value<short>()->default_value("4"))
 | 
				
			||||||
		("count", "How many usernames should be generated", cxxopts::value<int>()->default_value("1"))
 | 
							("count", "How many usernames should be generated", cxxopts::value<int>()->default_value("1"))
 | 
				
			||||||
 | 
							("seed", "String used as seed sequence. If not defined, system time will be used instead.", cxxopts::value<std::string>()->default_value(""))
 | 
				
			||||||
		("h,help", "Print help")
 | 
							("h,help", "Print help")
 | 
				
			||||||
	;
 | 
						;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -28,6 +29,7 @@ int main(int argc, char** argv)
 | 
				
			|||||||
	short min_num = result["min-num"].as<short>();
 | 
						short min_num = result["min-num"].as<short>();
 | 
				
			||||||
	short max_num = result["max-num"].as<short>();
 | 
						short max_num = result["max-num"].as<short>();
 | 
				
			||||||
	int count = result["count"].as<int>();
 | 
						int count = result["count"].as<int>();
 | 
				
			||||||
 | 
						std::string seed(result["seed"].as<std::string>());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if(min_char > max_char)
 | 
						if(min_char > max_char)
 | 
				
			||||||
	{
 | 
						{
 | 
				
			||||||
@@ -53,6 +55,6 @@ int main(int argc, char** argv)
 | 
				
			|||||||
		return -1;
 | 
							return -1;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	generate(min_char, max_char, min_num, max_num, count);
 | 
						generate(min_char, max_char, min_num, max_num, count, seed);
 | 
				
			||||||
	return 0;
 | 
						return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user