1. ホーム
  2. c++

[解決済み】C++でランダムな英数字の文字列を作成するにはどうすればいいですか?

2022-04-13 07:46:58

質問

英数字で構成されるランダムな文字列を作成したい。文字列の長さを指定できるようにしたい。

C++でこれを行うにはどうしたらよいでしょうか?

どのように解決するのですか?

Mehrdad Afshariの 回答 を使えばいいのですが、この単純な作業にはちょっと冗長すぎると思いました。ルックアップテーブルは、時に素晴らしい効果を発揮します。

#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;
}

なお rand 質の悪い乱数を生成する .