2013-02-21 11 views
11

Ich versuche, den folgenden Code (aus dem Internet) zu verwenden, um Zahlen aus Binomialverteilung zu generieren. Es kompiliert, aber eine Ausführung hängt es. (Ich verwende g ++ auf dem Mac.)Generieren von Nummer aus Binomialverteilung mit C++ TR1

Könnte jemand einen funktionierenden Code vorschlagen, um Zahlen aus Binomialverteilung mit C++ TR1-Bibliothek Features zu generieren?

#include <tr1/random> 
#include <iostream> 
#include <cstdlib> 

using namespace std; 
using namespace std::tr1; 

int main() 
{ 
    std::tr1::mt19937 eng; 
    eng.seed(time(NULL)); 
    std::tr1::binomial_distribution<int, double> roll(5, 1.0/6.0); 
    std::cout << roll(eng) << std::endl; 
    return 0; 
} 
+0

Haben Sie überprüft, in welcher Zeile Ihr Programm hängt? (Haben Sie einen Debugger verwendet?) – Zeta

+0

Es hängt in der Cout-Zeile. Genauer gesagt scheint 'roll (eng)' nicht zurückzukehren. – kay

+0

Funktioniert gut mit C++ 11 std :: binomial_distribution (nach dem Entfernen der zusätzlichen Vorlage Argument), FYI –

Antwort

1

Hier arbeitet Code:

#include <iostream> 
#include <random> 

int main() { 
    std::random_device rd; 
    std::mt19937 gen(rd()); 
    std::binomial_distribution<> d(5, 1.0/6.0); 
    std::cout << d(gen) << std::endl; 
} 

Sie können ihr Ergebnis here, überprüfen und es funktioniert mit den jüngsten GCC und Clang Versionen. Bitte beachten Sie, dass es im Allgemeinen besser ist, das Zufallsgerät anstelle der Zeit zu verwenden, um einen Startwert zu erhalten.

Kompilieren Sie es mit der --std=c++11.

Verwandte Themen