Подтвердить что ты не робот

Создайте случайную строку или номер в Qt4

Есть ли какая-либо функция или что-то подобное, с помощью которой я могу создавать абсолютно случайные строки или числа?

4b9b3361

Ответ 1

Вы можете создавать случайные числа, используя qrand. Если вам нужны строки, вы можете преобразовать int в строку. Вы также можете проверить класс QUuid, который генерирует универсально уникальные идентификаторы. Это не "абсолютно случайные", но они уникальны.

Ответ 2

int number;
int randomValue = qrand() % number;

возвращает случайное число randomValue с 0 <= randomValue < number.

qrand() объявлен в QtGlobal который # включен многими другими файлами Qt.

int value;
QString aString = QString::number(value);

преобразует целое число в QString.

Ответ 3

В следующем примере генерируются алфавитные строки с заглавными буквами от A до Z и length = len.

QString randString(int len)
{
    QString str;
    str.resize(len);
    for (int s = 0; s < len ; ++s)
        str[s] = QChar('A' + char(qrand() % ('Z' - 'A')));

    return str;
}

Ответ 4

Это не очень хороший способ генерации случайных чисел в заданном диапазоне. (На самом деле это очень плохо для большинства генераторов)

Вы предполагаете, что младшие разряды от генератора равномерно распределены. Это не относится к большинству генераторов. В большинстве генераторов случайность встречается в битах высокого порядка.

Используя остаток после делений, вы фактически выбрасываете случайность.

Вы должны масштабировать, используя умножение и деление. Не использовать оператор modulo. например,

my_numbe r= start_required + ( generator_output *  range_required)/generator_maximum;

Если generator_output находится в [0, generator_maximum], my_number будет находиться в [start_required , start_required + range_required].