Search code examples
c++stringrandom

How do I create a random alpha-numeric string in C++?


I'd like to create a random string, consisting of alpha-numeric characters. I want to be able to be specify the length of the string.

How do I do this in C++?


Solution

  • Mehrdad Afshari's answer would do the trick, but I found it a bit too verbose for this simple task. Look-up tables can sometimes do wonders:

    #include <ctime>
    #include <iostream>
    #include <unistd.h>
    
    std::string gen_random(const int len) {
        static const char alphanum[] =
            "0123456789"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            "abcdefghijklmnopqrstuvwxyz";
        std::string tmp_s;
        tmp_s.reserve(len);
    
        for (int i = 0; i < len; ++i) {
            tmp_s += alphanum[rand() % (sizeof(alphanum) - 1)];
        }
        
        return tmp_s;
    }
    
    int main(int argc, char *argv[]) {
        srand((unsigned)time(NULL) * getpid());     
        std::cout << gen_random(12) << "\n";        
        return 0;
    }
    

    Note that rand generates poor-quality random numbers.