En esta página

QRandomGenerator Class

La clase QRandomGenerator permite obtener valores aleatorios de un Generador de Números Aleatorios de alta calidad. Más...

Cabecera: #include <QRandomGenerator>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Heredado Por:

QRandomGenerator64

Nota: Todas las funciones de esta clase son reentrantes.

Nota: Estas funciones también son thread-safe:

Tipos públicos

Funciones Públicas

QRandomGenerator(quint32 seedValue = 1)
QRandomGenerator(const quint32 (&)[N] seedBuffer)
QRandomGenerator(std::seed_seq &sseq)
QRandomGenerator(const quint32 *begin, const quint32 *end)
QRandomGenerator(const quint32 *seedBuffer, qsizetype len)
QRandomGenerator(const QRandomGenerator &other)
double bounded(double highest)
int bounded(int highest)
qint64 bounded(qint64 highest)
quint32 bounded(quint32 highest)
quint64 bounded(quint64 highest)
int bounded(int lowest, int highest)
qint64 bounded(int lowest, qint64 highest)
qint64 bounded(qint64 lowest, int highest)
qint64 bounded(qint64 lowest, qint64 highest)
quint32 bounded(quint32 lowest, quint32 highest)
quint64 bounded(quint64 lowest, quint64 highest)
quint64 bounded(quint64 lowest, unsigned int highest)
quint64 bounded(unsigned int lowest, quint64 highest)
void discard(unsigned long long z)
void fillRange(UInt (&)[N] buffer)
void fillRange(UInt *buffer, qsizetype count)
quint64 generate64()
quint32 generate()
void generate(ForwardIterator begin, ForwardIterator end)
double generateDouble()
void seed(quint32 seed = 1)
void seed(std::seed_seq &seed)
QRandomGenerator::result_type operator()()

Miembros públicos estáticos

QRandomGenerator *global()
QRandomGenerator::result_type max()
QRandomGenerator::result_type min()
QRandomGenerator securelySeeded()
QRandomGenerator *system()
bool operator!=(const QRandomGenerator &rng1, const QRandomGenerator &rng2)

Descripción Detallada

QRandomGenerator puede utilizarse para generar valores aleatorios a partir de un generador de números aleatorios de alta calidad. Al igual que los motores aleatorios de C++, QRandomGenerator puede ser sembrado con valores proporcionados por el usuario a través del constructor. Una vez sembrada, la secuencia de números generada por esta clase es determinista. Es decir, dados los mismos datos de semilla, QRandomGenerator generará la misma secuencia de números. Pero dadas diferentes semillas, los resultados serán considerablemente diferentes.

QRandomGenerator::securelySeeded() se puede utilizar para crear un QRandomGenerator que esté sembrado de forma segura con QRandomGenerator::system(), lo que significa que la secuencia de números que genera no se puede predecir fácilmente. Además, QRandomGenerator::global() devuelve una instancia global de QRandomGenerator que Qt se encargará de sembrar de forma segura. Este objeto es seguro para hilos, puede ser compartido para la mayoría de los usos, y siempre es sembrado desde QRandomGenerator::system()

QRandomGenerator::system() puede usarse para acceder al generador aleatorio criptográficamente seguro del sistema. En los sistemas Unix, equivale a leer de /dev/urandom o de las llamadas al sistema getrandom() o getentropy().

La clase puede generar cantidades de 32 o 64 bits, o llenar una matriz de éstas. La forma más común de generar nuevos valores es llamar a las funciones generate(), generate64() o fillRange(). Se podría utilizar como:

    quint32 value = QRandomGenerator::global()->generate();

Además, proporciona una función de punto flotante generateDouble() que devuelve un número en el rango [0, 1) (es decir, incluyendo cero y excluyendo 1). También hay un conjunto de funciones de conveniencia que facilitan la obtención de un número aleatorio en un rango integral acotado.

Siembra y determinismo

QRandomGenerator puede ser sembrado con datos semilla específicos. Al hacerlo, los números generados por el objeto serán siempre los mismos, como en el siguiente ejemplo:

    QRandomGenerator prng1(1234), prng2(1234);
    Q_ASSERT(prng1.generate() == prng2.generate());
    Q_ASSERT(prng1.generate64() == prng2.generate64());

Los datos semilla adoptan la forma de una o varias palabras de 32 bits. El tamaño ideal de la semilla es aproximadamente igual al tamaño de la propia clase QRandomGenerator. Debido a la mezcla de los datos de la semilla, QRandomGenerator no puede garantizar que semillas distintas produzcan secuencias diferentes.

QRandomGenerator::global(), como todos los generadores creados por QRandomGenerator::securelySeeded(), siempre se siembra a partir de QRandomGenerator::system(), por lo que no es posible hacer que produzca secuencias idénticas.

Datos masivos

Cuando funciona en modo determinista, QRandomGenerator puede utilizarse para la generación de datos masivos. De hecho, se recomienda a las aplicaciones que no necesiten datos criptográficamente seguros o verdaderamente aleatorios que utilicen un QRandomGenerator normal en lugar de QRandomGenerator::system() para sus necesidades de datos aleatorios.

Para facilitar su uso, QRandomGenerator proporciona un objeto global que puede utilizarse fácilmente, como en el siguiente ejemplo:

    int x = QRandomGenerator::global()->generate();
    int y = QRandomGenerator::global()->generate();
    int w = QRandomGenerator::global()->bounded(16384);
    int h = QRandomGenerator::global()->bounded(16384);

Generador de números aleatorios para todo el sistema

QRandomGenerator::system() puede usarse para acceder al generador de números aleatorios de todo el sistema, que es criptográficamente seguro en todos los sistemas en los que se ejecuta Qt. Esta función utilizará las facilidades del hardware para generar números aleatorios cuando estén disponibles. En tales sistemas, esas facilidades son verdaderos Generadores de Números Aleatorios. Sin embargo, si son verdaderos RNGs, esas instalaciones tienen fuentes de entropía finitas y por lo tanto pueden fallar en producir cualquier resultado si su reserva de entropía se agota.

Si eso ocurre, primero el sistema operativo y luego QRandomGenerator recurrirán a generadores de números pseudoaleatorios de calidad decreciente (siendo el generador alternativo de Qt el más simple). Si esos generadores son todavía de calidad criptográfica es definido por la implementación. Por lo tanto, QRandomGenerator::system() no debería usarse para la generación de números aleatorios de alta frecuencia, para que la reserva de entropía no se vacíe. Como regla general, esta clase no debería ser llamada para generar más de un kilobyte por segundo de datos aleatorios (nota: esto puede variar de un sistema a otro).

Si una aplicación necesita datos RNG reales a granel, debería utilizar las facilidades del sistema operativo (como /dev/random en Linux) directamente y esperar a que la entropía esté disponible. Si la aplicación requiere motores PRNG de calidad criptográfica pero no de verdadera aleatoriedad, aún puede utilizarse QRandomGenerator::system() (véase la sección siguiente).

Si no se requiere ni un verdadero RNG ni un PRNG criptográficamente seguro, las aplicaciones deberían utilizar en su lugar motores PRNG como el modo determinista de QRandomGenerator y los de la C++ Standard Library. QRandomGenerator::system() se puede utilizar para sembrar estos.

Calidad Fallback

QRandomGenerator::system() utiliza las facilidades del sistema operativo para obtener números aleatorios, que intentan recoger entropía real del entorno circundante para producir verdaderos números aleatorios. Sin embargo, es posible que la reserva de entropía se agote, en cuyo caso el sistema operativo volverá a un motor pseudoaleatorio durante un tiempo. Bajo ninguna circunstancia QRandomGenerator::system() se bloqueará, esperando a que se recoja más entropía.

Los siguientes sistemas operativos garantizan que los resultados de su API de generación aleatoria serán al menos de calidad criptográficamente segura, incluso si se agota la reserva de entropía: Apple OS (Darwin), BSD, Linux, Windows. Salvo un problema de instalación del sistema (como que /dev/urandom no sea legible por el proceso actual), QRandomGenerator::system() tendrá por tanto las mismas garantías.

En otros sistemas operativos, QRandomGenerator recurrirá a un PRNG de buena distribución numérica, pero no puede garantizar una siembra adecuada en todos los casos. Consulte la documentación del sistema operativo para obtener más información.

Las aplicaciones que requieran que QRandomGenerator no recurra a generadores de calidad no criptográfica deben consultar la documentación de su sistema operativo o restringir su despliegue a uno de los anteriores.

Reentrada y seguridad de hilos

QRandomGenerator es reentrante, lo que significa que varios subprocesos pueden operar en esta clase al mismo tiempo, siempre que lo hagan en objetos diferentes. Si varios hilos necesitan compartir una secuencia PRNG, es necesario un bloqueo externo mediante un mutex.

Las excepciones son los objetos devueltos por QRandomGenerator::global() y QRandomGenerator::system(): esos objetos son seguros para los hilos y pueden ser utilizados por cualquier hilo sin bloqueo externo. Tenga en cuenta que la seguridad de hilos no se extiende a la copia de estos objetos: siempre deben ser utilizados por referencia.

Compatibilidad con la biblioteca estándar de C

QRandomGenerator sigue el modelo de los requisitos para los motores de números aleatorios de la Biblioteca Estándar C++ y puede utilizarse en casi todos los contextos en los que pueden utilizarse los motores de la Biblioteca Estándar. Las excepciones a los requisitos son las siguientes:

  • QRandomGenerator no admite la siembra desde otra clase similar a la secuencia de semillas aparte de la propia std::seed_seq;
  • QRandomGenerator no es comparable (pero es copiable) o secuenciable a std::ostream o desde std::istream.

QRandomGenerator también es compatible con las clases de distribución uniforme std::uniform_int_distribution y std:uniform_real_distribution, así como con la función libre std::generate_canonical. Por ejemplo, el siguiente código puede utilizarse para generar un número de coma flotante en el intervalo [1, 2,5):

    std::uniform_real_distribution<> dist(1, 2.5);
    return dist(*QRandomGenerator::global());

Véase también QRandomGenerator64.

Documentación de tipos de miembros

QRandomGenerator::result_type

Un typedef del tipo que devuelve operator(). Es decir, quint32.

Véase también operator().

Documentación de funciones miembro

QRandomGenerator::QRandomGenerator(quint32 seedValue = 1)

Inicializa este objeto QRandomGenerator con el valor seedValue como semilla. Dos objetos construidos o resembrados con el mismo valor de semilla producirán la misma secuencia de números.

Véase también seed() y securelySeeded().

template <qsizetype N> QRandomGenerator::QRandomGenerator(const quint32 (&)[N] seedBuffer)

Inicializa este objeto QRandomGenerator con los valores encontrados en el array seedBuffer como semilla. Dos objetos construidos o resembrados con el mismo valor de semilla producirán la misma secuencia de números.

Esta es una función sobrecargada.

Ver también seed() y securelySeeded().

[noexcept] QRandomGenerator::QRandomGenerator(std::seed_seq &sseq)

Inicializa este objeto QRandomGenerator con la secuencia sseq como semilla. Dos objetos construidos o resembrados con el mismo valor de semilla producirán la misma secuencia numérica.

Esta es una función sobrecargada.

Ver también seed() y securelySeeded().

QRandomGenerator::QRandomGenerator(const quint32 *begin, const quint32 *end)

Inicializa este objeto QRandomGenerator con los valores encontrados en el rango de begin a end como semilla. Dos objetos construidos o resembrados con el mismo valor de semilla producirán la misma secuencia de números.

Este constructor es equivalente a:

    std::seed_seq sseq(begin, end);
    QRandomGenerator generator(sseq);

Esta es una función sobrecargada.

Véase también seed() y securelySeeded().

QRandomGenerator::QRandomGenerator(const quint32 *seedBuffer, qsizetype len)

Inicializa este objeto QRandomGenerator con los valores len encontrados en el array seedBuffer como semilla. Dos objetos construidos o resembrados con el mismo valor de semilla producirán la misma secuencia de números.

Este constructor es equivalente a:

    std::seed_seq sseq(seedBuffer, seedBuffer + len);
    QRandomGenerator generator(sseq);

Esta es una función sobrecargada.

Véase también seed() y securelySeeded().

QRandomGenerator::QRandomGenerator(const QRandomGenerator &other)

Crea una copia del estado del generador en el objeto other. Si other es QRandomGenerator::system() o una copia de éste, este objeto también leerá de las instalaciones de generación aleatoria del sistema operativo. En ese caso, las secuencias generadas por los dos objetos serán diferentes.

En todos los demás casos, el nuevo objeto QRandomGenerator empezará en la misma posición en la secuencia determinista en la que estaba el objeto other. Ambos objetos generarán la misma secuencia a partir de este punto.

Por esta razón, no es aconsejable crear una copia de QRandomGenerator::global(). Si se necesita un generador determinista exclusivo, considere en su lugar utilizar securelySeeded() para obtener un nuevo objeto que no comparta ninguna relación con el QRandomGenerator::global().

double QRandomGenerator::bounded(double highest)

Genera un doble aleatorio en el rango entre 0 (inclusive) y highest (exclusive). Esta función es equivalente a y se implementa como:

    return generateDouble() * highest;

Si el parámetro highest es negativo, el resultado también lo será; si es infinito o NaN, el resultado también será infinito o NaN (es decir, no aleatorio).

Véase también generateDouble() y bounded(quint64).

int QRandomGenerator::bounded(int highest)

Genera una cantidad aleatoria de 32 bits en el rango entre 0 (inclusive) y highest (exclusive). highest debe ser positivo.

Tenga en cuenta que esta función no puede utilizarse para obtener valores en el rango completo de 32 bits de int. En su lugar, utilice generate() y haga un cast a int.

Se trata de una función sobrecargada.

Véase también generate(), generate64(), y generateDouble().

qint64 QRandomGenerator::bounded(qint64 highest)

Genera una cantidad aleatoria de 64 bits en el rango entre 0 (inclusive) y highest (exclusive). highest debe ser positivo.

Tenga en cuenta que esta función no se puede utilizar para obtener valores en el rango completo de 64 bits de qint64. En su lugar, utilice generate64() y cast to qint64 o, en su lugar, utilice la versión sin signo de esta función.

Nota: Esta función se implementa como un bucle, que depende del valor aleatorio obtenido. A largo plazo, en promedio debería repetirse algo menos de 2 veces, pero si el generador aleatorio es defectuoso, esta función puede tardar bastante más en ejecutarse.

Se trata de una función sobrecargada.

Véase también generate(), generate64(), y generateDouble().

quint32 QRandomGenerator::bounded(quint32 highest)

Genera una cantidad aleatoria de 32 bits en el rango comprendido entre 0 (inclusive) y highest (exclusive). También puede obtenerse el mismo resultado utilizando std::uniform_int_distribution con los parámetros 0 y highest - 1. Esta clase también puede utilizarse para obtener cantidades superiores a 32 bits; para 64 bits, también puede utilizarse la sobrecarga bounded() de 64 bits.

Por ejemplo, para obtener un valor entre 0 y 255 (ambos inclusive), se escribiría:

    quint32 v = QRandomGenerator::global()->bounded(256);

Naturalmente, también se podría obtener lo mismo enmascarando el resultado de generate() a sólo los 8 bits inferiores. Cualquiera de las dos soluciones es igual de eficiente.

Tenga en cuenta que esta función no se puede utilizar para obtener valores en el rango completo de 32 bits de quint32. En su lugar, utilice generate().

Se trata de una función sobrecargada.

Véase también generate(), generate64(), y generateDouble().

quint64 QRandomGenerator::bounded(quint64 highest)

Genera una cantidad aleatoria de 64 bits en el rango comprendido entre 0 (inclusive) y highest (exclusive). También puede obtenerse el mismo resultado utilizando std::uniform_int_distribution<quint64> con los parámetros 0 y highest - 1.

Tenga en cuenta que esta función no puede utilizarse para obtener valores en el rango completo de 64 bits de quint64. En su lugar, utilice generate64().

Nota: Esta función está implementada como un bucle, que depende del valor aleatorio obtenido. A largo plazo, por término medio debería repetirse algo menos de 2 veces, pero si el generador aleatorio es defectuoso, esta función puede tardar bastante más en ejecutarse.

Se trata de una función sobrecargada.

Véase también generate(), generate64(), y generateDouble().

int QRandomGenerator::bounded(int lowest, int highest)

Genera una cantidad aleatoria de 32 bits en el rango comprendido entre lowest (inclusive) y highest (exclusive), ambos pueden ser negativos, pero highest debe ser mayor que lowest.

Tenga en cuenta que esta función no puede utilizarse para obtener valores en el rango completo de 32 bits de int. En su lugar, utilice generate() y conviértalo a int.

Se trata de una función sobrecargada.

Véase también generate(), generate64(), y generateDouble().

qint64 QRandomGenerator::bounded(int lowest, qint64 highest)

qint64 QRandomGenerator::bounded(qint64 lowest, int highest)

quint64 QRandomGenerator::bounded(unsigned int lowest, quint64 highest)

quint64 QRandomGenerator::bounded(quint64 lowest, unsigned int highest)

Esta función existe para ayudar con la resolución de sobrecargas cuando los tipos de los parámetros no coinciden exactamente. Promoverán el tipo menor al tipo del mayor y llamarán a la sobrecarga correcta.

qint64 QRandomGenerator::bounded(qint64 lowest, qint64 highest)

Genera una cantidad aleatoria de 64 bits en el rango entre lowest (inclusive) y highest (exclusive), ambos pueden ser negativos, pero highest debe ser mayor que lowest.

Tenga en cuenta que esta función no puede utilizarse para obtener valores en el rango completo de 64 bits de qint64. En su lugar, utilice generate64() y conviértalo a qint64.

Nota: Esta función se implementa como un bucle, que depende del valor aleatorio obtenido. A largo plazo, en promedio debería repetirse algo menos de 2 veces, pero si el generador aleatorio es defectuoso, esta función puede tardar bastante más en ejecutarse.

Se trata de una función sobrecargada.

Véase también generate(), generate64(), y generateDouble().

quint32 QRandomGenerator::bounded(quint32 lowest, quint32 highest)

Genera una cantidad aleatoria de 32 bits en el rango comprendido entre lowest (inclusive) y highest (exclusive). El parámetro highest debe ser mayor que lowest.

También puede obtenerse el mismo resultado utilizando std::uniform_int_distribution con los parámetros lowest y \a highest - 1. Esta clase también puede utilizarse para obtener cantidades superiores a 32 bits.

Por ejemplo, para obtener un valor comprendido entre 1000 (incl.) y 2000 (excl.), se escribiría:

    quint32 v = QRandomGenerator::global()->bounded(1000, 2000);

Tenga en cuenta que esta función no puede utilizarse para obtener valores en el rango completo de 32 bits de quint32. En su lugar, utilice generate().

Se trata de una función sobrecargada.

Véase también generate(), generate64(), y generateDouble().

quint64 QRandomGenerator::bounded(quint64 lowest, quint64 highest)

Genera una cantidad aleatoria de 64 bits en el rango comprendido entre lowest (inclusive) y highest (exclusive). El parámetro highest debe ser mayor que lowest.

También puede obtenerse el mismo resultado utilizando std::uniform_int_distribution<quint64> con los parámetros lowest y \a highest - 1.

Tenga en cuenta que esta función no puede utilizarse para obtener valores en el rango completo de 64 bits de quint64. En su lugar, utilice generate64().

Nota: Esta función se implementa como un bucle, que depende del valor aleatorio obtenido. A largo plazo, por término medio debería repetirse algo menos de 2 veces, pero si el generador aleatorio es defectuoso, esta función puede tardar bastante más en ejecutarse.

Se trata de una función sobrecargada.

Véase también generate(), generate64(), y generateDouble().

void QRandomGenerator::discard(unsigned long long z)

Descarta las siguientes entradas z de la secuencia. Este método es equivalente a llamar generate() z veces y descartar el resultado, como en:

    while (z--)
        generator.generate();

template < typename UInt, size_t N, QRandomGenerator::IfValidUInt<UInt> = true > void QRandomGenerator::fillRange(UInt (&)[N] buffer)

Genera N cantidades de 32 o 64 bits (dependiendo del tipo UInt) y las almacena en la matriz buffer. Esta es la forma más eficiente de obtener más de una cantidad a la vez, ya que reduce el número de llamadas a la fuente del Generador de Números Aleatorios.

Por ejemplo, para llenar generar dos cantidades de 32 bits, se puede escribir:

    quint32 array[2];
    QRandomGenerator::global()->fillRange(array);

También habría sido posible hacer una llamada a generate64() y luego dividir las dos mitades del valor de 64 bits.

Véase también generate().

template <typename UInt, QRandomGenerator::IfValidUInt<UInt> = true> void QRandomGenerator::fillRange(UInt *buffer, qsizetype count)

Genera count cantidades de 32 o 64 bits (dependiendo del tipo UInt) y las almacena en el buffer apuntado por buffer. Esta es la forma más eficiente de obtener más de una cantidad a la vez, ya que reduce el número de llamadas a la fuente del Generador de Números Aleatorios.

Por ejemplo, para llenar una lista de 16 entradas con valores aleatorios, se puede escribir:

    QList<quint32> list;
    list.resize(16);
    QRandomGenerator::global()->fillRange(list.data(), list.size());

Véase también generate().

quint64 QRandomGenerator::generate64()

Genera una cantidad aleatoria de 64 bits y la devuelve.

Véase también operator()() y generate().

quint32 QRandomGenerator::generate()

Genera una cantidad aleatoria de 32 bits y la devuelve.

Véase también operator()() y generate64().

template <typename ForwardIterator> void QRandomGenerator::generate(ForwardIterator begin, ForwardIterator end)

Genera cantidades de 32 bits y las almacena en el rango comprendido entre begin y end. Esta función es equivalente a (y se implementa como):

    std::generate(begin, end, [this]() { return generate(); });

Esta función cumple los requisitos de la función std::seed_seq::generateque requiere valores enteros de 32 bits sin signo.

Tenga en cuenta que si el rango [begin, end) se refiere a un área que puede almacenar más de 32 bits por elemento, los elementos se inicializarán con sólo 32 bits de datos. Los demás bits serán cero. Para llenar el rango con cantidades de 64 bits, se puede escribir:

    std::generate(begin, end, []() { return QRandomGenerator::global()->generate64(); });

Si el rango se refiere a memoria contigua (como un array o los datos de un QList), también se puede utilizar la función fillRange().

Véase también fillRange().

double QRandomGenerator::generateDouble()

Genera un qreal aleatorio en el rango canónico [0, 1) (es decir, incluyendo cero y excluyendo 1).

Esta función es equivalente a:

    QRandomGenerator64 rd;
    return std::generate_canonical<qreal, std::numeric_limits<qreal>::digits>(rd);

También se puede obtener lo mismo utilizando std::uniform_real_distribution con los parámetros 0 y 1.

Véase también generate(), generate64(), y bounded().

[static] QRandomGenerator *QRandomGenerator::global()

Devuelve un puntero a un QRandomGenerator compartido que fue sembrado usando securelySeeded(). Esta función debería usarse para crear datos aleatorios sin la costosa creación de un QRandomGenerator sembrado de forma segura para un uso específico o almacenar el objeto QRandomGenerator bastante grande.

Por ejemplo, lo siguiente crea un color RGB aleatorio:

    return QColor::fromRgb(QRandomGenerator::global()->generate());

Los accesos a este objeto son seguros para los hilos y, por tanto, puede utilizarse en cualquier hilo sin bloqueos. El objeto también puede copiarse y la secuencia producida por la copia será la misma que producirá el objeto compartido. Tenga en cuenta, sin embargo, que si hay otros hilos accediendo al objeto global, esos hilos pueden obtener muestras a intervalos impredecibles.

Nota: Esta función es segura para hilos.

Véase también securelySeeded() y system().

[static constexpr] QRandomGenerator::result_type QRandomGenerator::max()

Devuelve el valor máximo que puede generar QRandomGenerator. Es decir, std::numeric_limits<result_type>::max().

Véase también min().

[static constexpr] QRandomGenerator::result_type QRandomGenerator::min()

Devuelve el valor mínimo que puede generar QRandomGenerator. Es decir, 0.

Véase también max().

[static] QRandomGenerator QRandomGenerator::securelySeeded()

Devuelve un nuevo objeto QRandomGenerator que fue sembrado de forma segura con QRandomGenerator::system(). Esta función obtendrá el tamaño de semilla ideal para el algoritmo que utiliza QRandomGenerator y, por lo tanto, es la forma recomendada para crear un nuevo objeto QRandomGenerator que se conservará durante algún tiempo.

Dada la cantidad de datos necesarios para sembrar de forma segura el motor determinista, esta función es algo cara y no debería utilizarse para usos a corto plazo de QRandomGenerator (utilizarla para generar menos de 2600 bytes de datos aleatorios es efectivamente un desperdicio de recursos). Si el uso no requiere tantos datos, considere usar QRandomGenerator::global() y no almacenar un objeto QRandomGenerator en su lugar.

Véase también global() y system().

void QRandomGenerator::seed(quint32 seed = 1)

Vuelve a sembrar este objeto utilizando el valor seed como semilla.

[noexcept] void QRandomGenerator::seed(std::seed_seq &seed)

Vuelve a sembrar este objeto utilizando la secuencia de semillas seed como semilla.

Se trata de una función sobrecargada.

[static] QRandomGenerator *QRandomGenerator::system()

Devuelve un puntero a un QRandomGenerator compartido que siempre utiliza las facilidades proporcionadas por el sistema operativo para generar números aleatorios. Las facilidades del sistema se consideran criptográficamente seguras al menos en los siguientes sistemas operativos: Apple OSes (Darwin), BSDs, Linux, Windows. También puede ser el caso en otros sistemas operativos.

También es posible que estén respaldados por un verdadero generador de números aleatorios por hardware. Por esa razón, el QRandomGenerator devuelto por esta función no debe utilizarse para la generación de datos masivos. En su lugar, utilícelo para sembrar QRandomGenerator o un motor aleatorio de la cabecera <random>.

El objeto devuelto por esta función es seguro para hilos y puede utilizarse en cualquier hilo sin bloqueos. También puede copiarse y el QRandomGenerator resultante también accederá a las facilidades del sistema operativo, pero no generarán la misma secuencia.

Nota: Esta función es thread-safe.

Véase también securelySeeded() y global().

QRandomGenerator::result_type QRandomGenerator::operator()()

Genera una cantidad aleatoria de 32 bits y la devuelve.

Véase también generate() y generate64().

Relacionados No miembros

bool operator!=(const QRandomGenerator &rng1, const QRandomGenerator &rng2)

Devuelve true si los dos motores rng1 y rng2 están en estados diferentes o si uno de ellos está leyendo de las instalaciones del sistema operativo y el otro no, false en caso contrario.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.