From 593f022515da8a834b358b5a57779afff619b3e7 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Thu, 13 Apr 2017 00:16:07 -0700 Subject: Long live QRandomGenerator This class provides a reasonably-secure random number generator that does not need seeding. That is quite unlike qrand(), which requires a seed and is low-quality (definitely not secure). This class is also like std::random_device, but better. It provides an operator() like std::random_device, but unlike that, it also provides a way to fill a buffer with random data, not just one 32-bit quantity. It's also stateless. Finally, it also implements std::seed_seq-like generate(). It obeys the standard requirement of the range (32-bit) but not that of the algorithm (if you wanted that, you'd use std::seed_seq itself). Instead, generate() fills with pure random data. Change-Id: Icd0e0d4b27cb4e5eb892fffd14b4e3ba9ea04da8 Reviewed-by: Lars Knoll --- src/corelib/global/qglobal.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'src/corelib/global/qglobal.cpp') diff --git a/src/corelib/global/qglobal.cpp b/src/corelib/global/qglobal.cpp index c2c9ea4e67..a718689064 100644 --- a/src/corelib/global/qglobal.cpp +++ b/src/corelib/global/qglobal.cpp @@ -3502,7 +3502,7 @@ Q_GLOBAL_STATIC(AndroidRandomStorage, randomTLS) if two threads call qsrand(1) and subsequently call qrand(), the threads will get the same random number sequence. - \sa qrand() + \sa qrand(), QRandomGenerator */ void qsrand(uint seed) { @@ -3553,10 +3553,12 @@ void qsrand(uint seed) \c ), the next number in the current sequence of pseudo-random integers. - Use \c qsrand() to initialize the pseudo-random number generator with - a seed value. + Use \c qsrand() to initialize the pseudo-random number generator with a + seed value. Seeding must be performed at least once on each thread. If that + step is skipped, then the sequence will be pre-seeded with a constant + value. - \sa qsrand() + \sa qsrand(), QRandomGenerator */ int qrand() { -- cgit v1.2.3