Как генерировать рандомные значения

Michael_Komas

Новичок
Автор темы
15
1
Мне нужен генератор рандомных чисел и букв, чтобы получалось +- так: G31HDK, при этом, буквы и цифры стояли в разных местах, а может цифр вообще не быть. Почитал, нигде эту информацию не нашёл. Буквы смог сгенерировать через distr ('A', 'Z') , цифры через rand, а вот как их совместить и заменять - не понял.. Если кто-то знает, скажите пожалуйста.
 
Решение
по первой ссылке в гугле

C++:
std::string random_string(size_t length)
{
    auto randchar = []() -> char
    {
        const char chars[] =
            "0123456789"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            "abcdefghijklmnopqrstuvwxyz";
        const size_t max_index = (sizeof(chars) - 1);
        return chars[rand() % max_index];
    };
    std::string str(length, 0);
    std::generate_n(str.begin(), length, randchar);
    return str;
}

int main()
{
    std::cout << random_string(16) << std::endl;
}
Это конечно хорошо, но чет оно выдает одни и те же значения)
1644855366576.png

Попробуй вот это. Мб тебе подойдет. Написал на отьебись, но выдает у меня на сайте выше всегда разную строку
C++:
...

resolveZ

Участник
39
14
Почитал, нигде эту информацию не нашёл.
по первой ссылке в гугле

C++:
std::string random_string(size_t length)
{
    auto randchar = []() -> char
    {
        const char chars[] =
            "0123456789"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            "abcdefghijklmnopqrstuvwxyz";
        const size_t max_index = (sizeof(chars) - 1);
        return chars[rand() % max_index];
    };
    std::string str(length, 0);
    std::generate_n(str.begin(), length, randchar);
    return str;
}

int main()
{
    std::cout << random_string(16) << std::endl;
}
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
по первой ссылке в гугле

C++:
std::string random_string(size_t length)
{
    auto randchar = []() -> char
    {
        const char chars[] =
            "0123456789"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            "abcdefghijklmnopqrstuvwxyz";
        const size_t max_index = (sizeof(chars) - 1);
        return chars[rand() % max_index];
    };
    std::string str(length, 0);
    std::generate_n(str.begin(), length, randchar);
    return str;
}

int main()
{
    std::cout << random_string(16) << std::endl;
}
Это конечно хорошо, но чет оно выдает одни и те же значения)
1644855366576.png

Попробуй вот это. Мб тебе подойдет. Написал на отьебись, но выдает у меня на сайте выше всегда разную строку
C++:
#include <iostream>
#include <string>
#include <algorithm>
#include <random>

using namespace std;

std::string random_string(size_t length)
{
    string chars = 
            "0123456789"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            "abcdefghijklmnopqrstuvwxyz";
    
    random_device device;
    mt19937 generator(device());
    string str;
    for(size_t i = 0; i < length; i++){
       uniform_int_distribution<int> distribution(0, chars.size() - 1);
       str += chars.at(distribution(generator));
    }
    return str;
}

int main()
{
    std::cout << random_string(16) << std::endl;
    return 0;
}
 
Последнее редактирование:

Michael_Komas

Новичок
Автор темы
15
1
Это конечно хорошо, но чет оно выдает одни и те же значения)

Попробуй вот это. Мб тебе подойдет. Написал на отьебись, но выдает у меня на сайте выше всегда разную строку
C++:
#include <iostream>
#include <string>
#include <algorithm>
#include <random>

using namespace std;

std::string random_string(size_t length)
{
    string chars =
            "0123456789"
            "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
            "abcdefghijklmnopqrstuvwxyz";
   
    random_device device;
    mt19937 generator(device());
    string str;
    for(size_t i = 0; i < length; i++){
       uniform_int_distribution<int> distribution(0, chars.size() - 1);
       str += chars.at(distribution(generator));
    }
    return str;
}

int main()
{
    std::cout << random_string(16) << std::endl;
    return 0;
}
Спасибо, рандомит - уже хорошо, не знаешь, как его в цикл загнать можно, чтобы раз n-ное количество раз генерировал?
 

Dark_Knight

Me, me and me.
Друг
4,062
2,077
Спасибо, рандомит - уже хорошо, не знаешь, как его в цикл загнать можно, чтобы раз n-ное количество раз генерировал?
Смотря все от задачи зависит. for пробуй. Я же не знаю, что ты конкретно хочешь сделать