Die Verbesserung der Qualität von random number generation in Qt 5.3

Ich bin derzeit auf der Umsetzung eines random number generator in Qt5.3 als Teil des genetischen Algorithmus Experimente. Ich habe versucht, verschiedene Methoden, aber das beste scheint zu sein:

  //Seed the random generator with current time
  QTime time = QTime::currentTime();
  qsrand((uint)time.msec());

Und dann diese Funktion zum generieren der Zufallszahlen:

int MainWindow::getRandomNo(int low, int high)
{
    return qrand() % ((high + 1) - low) + low;
}

Aufgrund der Natur dieser Experimente, die die zufällige Natur dieser zahlen ist wichtig. Gibt es eine Möglichkeit zur Verbesserung der Qualität des Zufallszahlen-Proben? Bei der statistischen Analyse des Qt-random number generator Exponate typische Muster, die sich in älteren Systemen von random number generation.

Die Methode oben verwendet, stützt sich auf die aktuelle Zeit als Startwert für den Zufallsgenerator. Gibt es eine Möglichkeit zur Verbesserung der Samen, so dass die random-Sequenzen sind weniger anfällig für Muster? Ich wäre extrem dankbar für jede Hilfe.

  • Irgendeinem Grund nicht zu verwenden <random> ? Es ist viel robuster.
  • Es scheint zu leiden, die gleichen Muster, Themen - fast schon vorhersehbar gegeben eine ausreichend große Stichprobe-Größe.
  • Jeder PRNG ist vorhersehbar mit einer "genügend großen" sample-Größe. Aber "groß genug" ist weit von der mit guten algorithmen. Haben Sie sogar einen Blick auf die verfügbaren? cplusplus.com/reference/random
  • Diese Besondere Anwendung ist eine simulation des evolutionären Prozesses ist, und als solche wird besser, je mehr zufällige Eingabe. Die Zufallszahlen-Generatoren, die Sie erwähnt haben, sind fantastisch - aber das ist das problem, Sie sind zu gut. Die random-Sequenzen generiert werden, sind alle viel zu gleichmäßig verteilt zu sein. Was gebraucht wird ist ein system, das automatisch einen true-random-Sequenz. Das einzige, was, das kam sogar in der Nähe war dies ein hardware-Zufallszahlen-generator. Bisher die beste, die ich gefunden habe, ist die Qt meiner Frage, mit der Uhr wie ein samenkorn.
  • Es gibt keine solche Sache wie ein RNG, die "zu gut". Mersenne Twister wird Ihnen eine Folge von zahlen mit (fast) der gleichen Wahrscheinlichkeit. Auch eine Sequenz wie 0 - 0 - 0 - 0 - 0
  • zu gleichmäßig" ist eine Eigenschaft von "true" zufällige Reihenfolge". Oder meinst du "true random sequence" muss ein Muster drin?
  • Ich vermute, dass Sie eine non-uniform distribution, und auch das ist zur Verfügung gestellt durch <random>.
  • Vielen Dank für alle Antworten. Ich verstehe die Verwirrung über das, was ich verlange, ist es schwer zu vermitteln, dass das genaue problem, ohne etwas Hintergrundwissen GAs!

InformationsquelleAutor Adam893 | 2014-10-03
Schreibe einen Kommentar