2010-07-14 12 views

Respuesta

17

Puede crear números aleatorios usando qrand. Si necesita cadenas, puede convertir el int en cadena. También puede consultar la clase QUuid, que genera Identificadores únicos universales. Esos no son "totalmente aleatorios", pero son únicos.

+0

¡Los enlaces en su respuesta ahora están rotos! – zar

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

devuelve un número aleatorio randomValue con 0 < = randomValue < number.

qrand() se declara en QtGlobal que es #incluido por muchos otros archivos Qt.

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

convierte un número entero en QString.

2

El siguiente ejemplo genera cadenas alfabéticas con letras mayúsculas de A a 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; 
} 
2

Este no es un método muy bueno para generar números aleatorios dentro de un rango determinado. (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 ocurre en los bits de orden superior.

Al usar el resto después de las divisiones estás en efecto descartando la aleatoriedad.

Debe escalar usando multiplicación y división. No se usa el operador de módulo. por ejemplo

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

Si generator_output es en [0, generator_maximum], my_number habrá en [start_required , start_required + range_required].