C ++ 11 Zufallszahlen und std :: bind interagieren auf unerwartete Weise

7

Ich verwende GCC 4.6.3 und habe versucht, Zufallszahlen mit dem folgenden Code zu generieren:

%Vor%

Ich erwartete, dass beide Methoden eine Sequenz von 5 Zufallszahlen erzeugen. Stattdessen bekomme ich das eigentlich:

%Vor%

Ist das ein GCC-Fehler? Oder ist es ein kleines Problem mit std :: bind? Wenn ja, können Sie das Ergebnis nachvollziehen?

Danke.

    
patvarilly 24.12.2012, 16:54
quelle

3 Antworten

11

Beim Binden wird eine Kopie von rng_engine erstellt. Wenn Sie eine Referenz übergeben möchten, müssen Sie Folgendes tun:

%Vor%     
Tristram Gräbener 24.12.2012, 17:00
quelle
5

Das std::uniform_real_distribution::operator() benötigt ein Generator & , also müssen Sie mit std :: ref

binden %Vor%     
nurettin 24.12.2012 17:01
quelle
2

bind() ist für wiederholte Verwendung.

Putting es außerhalb der Schleife ...

%Vor%

... gibt mir das erwartete Ergebnis:

%Vor%     
a.l.e 28.01.2016 19:43
quelle

Tags und Links