główny .cppboost :: random generuje ten sam numer za każdym razem
#include "stdafx.h"
#include "random_generator.h"
int
main (int argc, char *argv[])
{
cout.setf(ios::fixed);
base_generator_type base_generator;
int max = pow(10, 2);
distribution_type dist(1, max);
boost::variate_generator<base_generator_type&,
distribution_type > uni(base_generator, dist);
for (int i=0; i<10; i++) {
//cout << random_number(2) << endl;
cout << uni() << endl;
}
return EXIT_SUCCESS;
} /* ---------- end of function main ---------- */
random_gemerator.h
#include "stdafx.h"
#include <boost/random.hpp>
#include <boost/generator_iterator.hpp>
typedef boost::mt19937 base_generator_type;
typedef boost::lagged_fibonacci19937 fibo_generator_type;
typedef boost::uniform_int<> distribution_type;
typedef boost::variate_generator<fibo_generator_type&,
distribution_type> gen_type;
int
random_number (int bits)
{
fibo_generator_type fibo_generator;
int max = pow(10, bits);
distribution_type dist(1, max);
gen_type uni(fibo_generator, dist);
return uni();
} /* ----- end of function random_number ----- */
stdafx.h
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
każdym razem, gdy go uruchomić, to wszystkie generują tę samą sekwencję numerów
jak 77, 33,5, 22, ...
jak używać boost: losowo poprawnie?
to jest to. ale może mieć mały problem, jak następuje:
wydaje dźwięk
get_seed(); for (;;) {cout << generate_random() << endl; } // is ok
to genereate taką samą liczbę losową
int get_random() {get_seed();return generate_random();} for (;;) {cout << get_random() <<endl;} // output the same random number yet
Ya prawo. Jeśli materiał siewny jest taki sam, generator rozpocznie się od tej samej liczby losowej za każdym razem, – A9S6
to jest to.ale może mieć mały problem, jak na przykład: wydaje się dźwięk get_seed(); for (;;) {cout << generate_random() << endl; } // jest ok to genereate ta sama liczba losowa int get_random() {get_seed(); return generate_random();} dla (;;) {cout << get_random() << endl;} // output ta sama liczba losowa, ale – mono
generuje ziarno za każdym razem, gdy wywoływana jest funkcja. vs używać tego samego materiału siewnego za każdym razem, gdy jest tym samym nasieniem? dlaczego dostaję tę samą sekwencję liczb losowych w poprzedni sposób – mono