noboxer
@noboxer

Всё ли в порядке с данным блоком?

#include <random>
#include <string>

string keygen(int max_length) {
  string possible characters = "“abcdefghijklmnopqrstuvwxyz" ;
  random device rd;
  mt19937 engine(rd());
  uniform_int_distribution<> dist(0, possible_characters.size()-1);
  string ret = "";
  for(int i = 0; i < max_length; i++){
    int random index = dist(engine);
    ret += possible_characters[random_index];
  }
  return ret;
}
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
wataru
@wataru Куратор тега C++
Разработчик на С++, экс-олимпиадник.
Нет.

Во-первых, он не компилируется. У вас там названия переменных кое где из двух слов состоят (А в других местах те же переменные с '_' идут - явно кто-то ошибся при перепечатывании текста).

Во-вторых, тут подход немного через пятую точку. Не нужна вам строка из алфавита. Чтобы получить случайный символ, можно случайное число от 0 до 25 прибавить к 'a' - ведь символы в C++ - это целочисленные переменные, хранящие ASCII коды букв. B вот дизайнеры этих кодов были довольно умные дяденьки, поэтому английский алфавит идет там по порядку одним блоком.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы