sorteos - Crear una cadena o número al azar en Qt4
numeros aleatorios google (6)
El siguiente ejemplo genera cadenas alfabéticas con letras mayúsculas de la A a la Z y longitud = 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;
}
¿Hay alguna función o algo por el cual pueda crear cadenas o números totalmente aleatorios?
Este no es un método muy bueno para generar números aleatorios dentro de un rango dado. (De hecho, es muy malo para la mayoría de los generadores)
Está asumiendo que los bits de bajo orden del generador están distribuidos uniformemente. Este no es el caso con la mayoría de los generadores. En la mayoría de los generadores, la aleatoriedad se produce en los bits de orden superior.
Al utilizar el resto después de las divisiones, en efecto, está eliminando la aleatoriedad.
Debes escalar usando la multiplicación y la división. No usar el modulo operador. p.ej
my_numbe r= start_required + ( generator_output * range_required)/generator_maximum;
Si generator_output
está en [0, generator_maximum]
, my_number
estará en [start_required , start_required + range_required]
.
Usar quuid
#include <QUuid>
QString randomStr = QUuid::createUuid();
Here está la buena respuesta usando qrand . La solución a continuación usa QUuid , como ya se sugirió anteriormente, para generar QUuid aleatorias y únicas (todos son números hex
):
#include <QApplication>
#include <QDebug>
#include <QRegularExpression>
#include <QUuid>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
// random hex string generator
for (int i = 0; i < 10; i++)
{
QString str = QUuid::createUuid().toString();
str.remove(QRegularExpression("{|}|-")); // if you want only hex numbers
qDebug() << str;
}
return a.exec();
}
Salida
"479a494a852747fe90efe0dc0137d059"
"2cd7e3b404b54fad9154e46c527c368a"
"84e43735eacd4b8f8d733bf642476097"
"d7e824f920874f9d8b4264212f3bd385"
"40b1c6fa89254705801caefdab5edd96"
"b7067852cf9d45ca89dd7af6ffdcdd23"
"9a2e5e6b65c54bea8fb9e7e8e1676a1a"
"981fa826073947e68adc46ddf47e311c"
"129b0ec42aed47d78be4bfe279996990"
"818035b0e83f401d8a56f34122ba7990"