Seite 1 von 1
[solved]Immer die gleiche Zufallszahl....
Verfasst: 7. April 2011 11:11
von redbulls
Hi
ich hab ein Problem. Ich möchte einen Zufälligen HEX Code erzeugen, aber er wird nicht zufällig erzeugt.
Code: Alles auswählen
QByteArray hash = QCryptographicHash::hash(QString(QString::number(qrand())).toUtf8(),QCryptographicHash::Sha1); [\code]
liefert immer den gleichen Output...
Weiß jemand warum?
danke
Verfasst: 7. April 2011 11:48
von franzf
Wie und wo initialisierst du den Generator mit qsrand()?
Verfasst: 7. April 2011 13:07
von redbulls
qsrand(1) ruf ich im constructor des objektes auf. Also nur einmal, aber auch wenn ich es vor jeder Generierung aufrufe, kommt der selbe output.
Verfasst: 7. April 2011 13:22
von franzf
Du hattest noch nie mit diesen "Zufallszahlen" zutun?
qsrand() initialisiert den Generator. Gleicher seed -> gleiche Zahlenreihe.
qsrand() ist nicht an Objekte gebunden, sondern verwaltet einen globalen state. Einmal qsrand() aufgerufen, und schon greifen ALLE qrand auf den neuen seed() zu.
Kleines Beispiel?
Code: Alles auswählen
#include <QtGlobal>
#include <QDebug>
struct Generator {
Generator() {
qsrand(1);
}
int get() const {
return qrand();
}
};
int main() {
qDebug() << qrand();
qDebug() << qrand();
qsrand(1);
qDebug() << qrand();
qDebug() << qrand();
Generator g;
qDebug() << qrand();
qDebug() << "g" << g.get();
qDebug() << "g" << g.get();
Generator g2;
qDebug() << "g" << g.get();
qDebug() << "g2" << g2.get();
qrand();
}
Hättest du den Output erwartet?
Willst du mehr? ->
http://www.boost.org/doc/libs/1_46_1/do ... andom.html
Verfasst: 7. April 2011 16:03
von redbulls
danke für die hilfe!
funktioniert jetzt!