[Boost] Niepoprawnie działająca funkcja losująca
Ostatnio zmodyfikowano 2014-08-10 11:42
km2442 Temat założony przez niniejszego użytkownika |
[Boost] Niepoprawnie działająca funkcja losująca » 2014-08-09 23:23:33 Witam, Piszę program losujący liczby pseudolosowe bez powtórzeń. Chcąc ominąć ograniczenie funkcji rand zdecydowałem się użyć biblioteki boost. Lecz pomimo wielu prób, szukania w dokumentacji oraz w internecie jedyny działający kod jaki udało mi się uzyskać to:
#include <iostream> #include <boost/random.hpp>
using namespace std; using namespace boost; int main() { typedef boost::mt19937 ENG; typedef boost::uniform_int<int> DIST; typedef boost::variate_generator<ENG, DIST> GEN;
ENG eng; DIST dist(1, 10000000); GEN gen(eng, dist); }
używając generatora przepuszczam liczby przez algorytm aby wylosowane liczby były bez powtórzeń, i wpisuje je do dynamicznie allokowanej tablicy. Jest jednak problem, za każdym razem losuje mi się jedynie 32768 liczb i nie ważne jaki zakres ustawie, nie jest on szerszy od 32768. Czy istnieje więc jakiś prosty sposob abym za pomocą biblioteki boost mógł wylosować powiedzmy milion liczb z zakresu od 1 do 10 milionów?
Dziękuję za odpowiedź. |
|
Monika90 |
» 2014-08-10 11:42:52 boost.random już się w ten sposób nie używa, tzn. variate_generator jest zbędny. W tym wypadku w ogóle nie trzeba sięgać po boost bo biblioteka standardowa wystarczy. używając generatora przepuszczam liczby przez algorytm aby wylosowane liczby były bez powtórzeń, i wpisuje je do dynamicznie allokowanej tablicy. Jest jednak problem, za każdym razem losuje mi się jedynie 32768 liczb i nie ważne jaki zakres ustawie, nie jest on szerszy od 32768
|
pewnie twój tajny algorytm jest błędny. |
|
« 1 » |