tabla sorteos para número numeros numero google generador dime azar aleatorios aleatorio qt qt4 random

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] .


Puedes 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.


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"


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

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

qrand() se declara en QtGlobal que está QtGlobal en muchos otros archivos Qt.

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

convierte un entero a QString.