#include <random>
#include <chrono>
#include <iostream>
#include <string>
#include <fstream>
class imgurRandom
{
public:
char upperCase()
{
auto timeSeed = std::chrono::system_clock::now().time_since_epoch().count();
std::minstd_rand0 generator(timeSeed);
std::uniform_int_distribution<int> distribution(minRangeOfAsciiUppercaseLetter, maxRangeOfAsciiUppercaseLetter);
auto getRandom = [&]() { return distribution(generator); };
return getRandom();
}
char lowerCase()
{
auto timeSeed = std::chrono::system_clock::now().time_since_epoch().count();
std::minstd_rand0 generator(timeSeed);
std::uniform_int_distribution <int> distribution(minRangeOfAsciiLowercaseLetter, maxRangeOfAsciiLowercaseletter);
auto getRandom = [&]() { return distribution(generator); };
return getRandom();
}
unsigned short int getTrueOrFalse()
{
auto timeSeed = std::chrono::system_clock::now().time_since_epoch().count();
std::minstd_rand0 generator(timeSeed);
std::uniform_int_distribution<int> distribution(0, 1);
auto getRandom = [&]() { return distribution(generator); };
return getRandom();
}
private:
const unsigned short int minRangeOfAsciiUppercaseLetter = 65;
const unsigned short int maxRangeOfAsciiUppercaseLetter = 90;
const unsigned short int minRangeOfAsciiLowercaseLetter = 97;
const unsigned short int maxRangeOfAsciiLowercaseletter = 122;
const unsigned short int minDigitRange = 0;
const unsigned short int maxDigitRange = 9;
};
int main()
{
imgurRandom random;
char letter;
unsigned short int asciiCode = 0;
std::string imageName = "";
// std::ofstream fileToStoreImageNames;
//fileToStoreImageNames.open("imgur_names.txt", std::ios::app);
// if (!fileToStoreImageNames.is_open())
// return -1;
for (auto i = 0; i < 6; i++)
{ /* if getTrueOrFalse()==0 return upperCase() if not return lowerCase() */
asciiCode = random.getTrueOrFalse() == 0 ? random.upperCase() : random.lowerCase();
letter = static_cast <char>(asciiCode);
if (imageName.size() > 0)
imageName += letter;
else
imageName = letter;
}
// fileToStoreImageNames << imageName << std::endl;
std::cout << imageName << std::endl;
return 0;
}