summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qglobal.cpp
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2017-04-13 00:16:07 -0700
committerThiago Macieira <thiago.macieira@intel.com>2017-06-12 06:14:34 +0000
commit593f022515da8a834b358b5a57779afff619b3e7 (patch)
tree1624efc58e91582e19f4f4f64686b067451cfeb9 /src/corelib/global/qglobal.cpp
parent267edbec198a0cedbf7bed4c3c5fa93c1dbc86bd (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.cpp10
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()
{