Есть ли какая-либо функция или что-то подобное, с помощью которой я могу создавать абсолютно случайные строки или числа?
Создайте случайную строку или номер в Qt4
Ответ 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]
.