Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Boost] Niepoprawnie działająca funkcja losująca

Ostatnio zmodyfikowano 2014-08-10 11:42
Autor Wiadomość
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ź.
P-115254
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.
P-115263
« 1 »
  Strona 1 z 1