#include <iostream>
#include <vector>
#include <string>
#include <random>
#include <chrono>
#include <iomanip> // setw
// Function to generate a random string of given length
std::string generateRandomString(size_t length, std::mt19937& rng) {
const std::string charset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
std::uniform_int_distribution<size_t> dist(0, charset.size() - 1);
std::string result;
result.reserve(length);
for (size_t i = 0; i < length; ++i) {
result.push_back(charset[dist(rng)]);
}
return result;
}
// Function to generate a random date
std::string generateRandomDate(std::mt19937& rng) {
std::uniform_int_distribution<int> yearDist(2000, 2020); // Random year between 2000 and 2020
std::uniform_int_distribution<int> monthDist(1, 12); // Random month between 1 and 12
std::uniform_int_distribution<int> dayDist(1, 28); // Random day between 1 and 28
int year = yearDist(rng);
int month = monthDist(rng);
int day = dayDist(rng);
std::ostringstream oss;
oss << std::setw(4) << std::setfill('0') << year << "-"
<< std::setw(2) << std::setfill('0') << month << "-"
<< std::setw(2) << std::setfill('0') << day;
return oss.str();
}
// Function to generate a random file size
size_t generateRandomFileSize(std::mt19937& rng) {
std::uniform_int_distribution<size_t> sizeDist(1, 100000); // Random file size between 1 and 100000 bytes
return sizeDist(rng);
}
int main() {
// Seed RNG with high‑resolution clock
std::mt19937 rng(std::chrono::high_resolution_clock::now().time_since_epoch().count());
std::vector<std::string> extensions = {".txt", ".jpg", ".png", ".cpp", ".pdf"};
std::uniform_int_distribution<size_t> extDist(0, extensions.size() - 1);
size_t numberOfFiles = 10; // Number of random files to generate
size_t fileLength = 9;
for (size_t i = 0; i < numberOfFiles; ++i) {
std::string fileName = generateRandomString(fileLength, rng); // Generate random file name
std::string extension = extensions[extDist(rng)]; // Randomly select an extension
std::string date = generateRandomDate(rng); // Generate random date
size_t fileSize = generateRandomFileSize(rng); // Generate random file size
std::cout << fileName << extension << " "
<< date << " "
<< fileSize << " bytes\n";
}
}
/*
run:
1oiPG9Nox.jpg 2006-07-03 20903 bytes
g3zAS2CTx.pdf 2003-09-03 12098 bytes
XZl7rmAA2.cpp 2004-12-09 27672 bytes
b5y5HZvOt.txt 2005-11-20 28251 bytes
TncRJ8aWJ.txt 2017-02-18 73647 bytes
T4PyWDaDj.pdf 2014-05-24 45914 bytes
lP5mjg1zf.cpp 2019-11-04 40439 bytes
reKDBdlMp.pdf 2020-03-04 48000 bytes
tOINuNtlH.cpp 2005-12-24 72486 bytes
pQ29vLIkT.jpg 2006-09-04 85396 bytes
*/