Ich würde mt19937 verwenden, um über ein Array zu schleifen und jeden Wert davon genau einmal, aber in zufälliger Reihenfolge. Gibt es im Wesentlichen eine Möglichkeit, mt19937 zu verwenden, um alle Zahlen innerhalb eines bestimmten Bereichs genau einmal zu erzeugen (ohne Duplikate zu ignorieren, aber sicherzustellen, dass es keine Duplikate insgesamt erzeugt (aus Gründen der Effizienz))?Wie Mersenne Twister verwenden, um alle Werte zwischen zwei Zahlen genau einmal zu generieren
Ich habe eine Shuffle-Funktion in Betracht gezogen, aber es sind nur die Indizes, die mir wichtig sind; Die Werte innerhalb des Arrays sind willkürlich, aber ihr entsprechender Index ist wichtig. Ich habe eine Matrix von 1, und ich muss zufällig einen Index auswählen und diese 1 zu einer 0 machen. Aber ich möchte diese Berechnung nicht mehr als nötig durchführen (genau so viele Elemente wie in der Matrix).
Blick auf 'shuffle':
Sie auch
std::shuffle
nutzen könnten. – Jarod42Haben Sie versucht, dieses Problem selbst zu lösen? Außerdem ist dieses Problem nicht spezifisch für die von Ihnen verwendete Zufallszahlen-Engine (mt19937). – Xirema
Zufallszahlen erzeugen Duplikate, sonst wären sie nicht zufällig. Ich zweite @ Jarod42 Vorschlag, um in ['std :: shuffle'] (http://en.cppreference.com/w/cpp/algorithm/random_shuffle) zu sehen. –