diff options
author | Thiago Macieira <thiago.macieira@intel.com> | 2017-04-13 00:16:07 -0700 |
---|---|---|
committer | Thiago Macieira <thiago.macieira@intel.com> | 2017-06-12 06:14:34 +0000 |
commit | 593f022515da8a834b358b5a57779afff619b3e7 (patch) | |
tree | 1624efc58e91582e19f4f4f64686b067451cfeb9 /src/corelib/global/qglobal.cpp | |
parent | 267edbec198a0cedbf7bed4c3c5fa93c1dbc86bd (diff) |
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 <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/global/qglobal.cpp')
-rw-r--r-- | src/corelib/global/qglobal.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
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 <stdlib.h>), 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() { |