How to create a list of random file names, including extension, dates, and file size in C++

2 Answers

0 votes
#include <iostream>
#include <vector>
#include <string>
#include <ctime>
#include <iomanip> // setw

// Function to generate a random string of given length
std::string generateRandomString(size_t length) {
    const char charset[] = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    std::string result;
    result.resize(length);

    for (size_t i = 0; i < length; ++i) {
        result[i] = charset[rand() % (sizeof(charset) - 1)];
    }

    return result;
}

// Function to generate a random date
std::string generateRandomDate() {
    int year = rand() % 21 + 2000; // Random year between 2000 and 2020
    int month = rand() % 12 + 1;   // Random month between 1 and 12
    int day = rand() % 28 + 1;     // Random day between 1 and 28

    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() {
    return rand() % 100000 + 1; // Random file size between 1 and 100000 bytes
}

int main() {
    srand(static_cast<unsigned int>(time(0))); // Seed the random number generator

    std::vector<std::string> extensions = {".txt", ".jpg", ".png", ".cpp", ".pdf"};
    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); // Generate random file name 
        std::string extension = extensions[rand() % extensions.size()]; // Randomly select an extension
        std::string date = generateRandomDate(); // Generate random date
        size_t fileSize = generateRandomFileSize(); // Generate random file size

        std::cout << fileName << extension << " "
                  << date << " "
                  << fileSize << " bytes" << std::endl;
    }
}


   
/*
run:
   
G1zTo5jJk.jpg 2007-07-08 51954 bytes
LTEE4SI0j.jpg 2011-11-13 43442 bytes
PDqmuO3GH.cpp 2004-05-21 3346 bytes
qJO2qjukZ.png 2010-08-27 67087 bytes
HqclTqxb4.cpp 2020-09-05 70531 bytes
imVyTyoaF.jpg 2011-03-19 43846 bytes
rXwXdy8XO.txt 2017-10-12 70193 bytes
9Z4fbOBUc.pdf 2004-06-09 1754 bytes
ZHahuu4vS.txt 2003-10-10 65126 bytes
0SnZHh2GT.png 2006-10-18 25890 bytess
   
*/

 



answered Apr 18, 2025 by avibootz
0 votes
#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

*/

 



answered 21 hours ago by avibootz

Related questions

...