本文整理汇总了C++中boost::mt19937::seed方法的典型用法代码示例。如果您正苦于以下问题:C++ mt19937::seed方法的具体用法?C++ mt19937::seed怎么用?C++ mt19937::seed使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类boost::mt19937
的用法示例。
在下文中一共展示了mt19937::seed方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: Value
Constraint::Constraint()
: Value(0.0),
Type(None),
AlignmentType(Undef),
Name(""),
First(GeoUndef),
FirstPos(none),
Second(GeoUndef),
SecondPos(none),
Third(GeoUndef),
ThirdPos(none),
LabelDistance(10.f),
LabelPosition(0.f),
isDriving(true),
InternalAlignmentIndex(-1),
isInVirtualSpace(false)
{
// Initialize a random number generator, to avoid Valgrind false positives.
static boost::mt19937 ran;
static bool seeded = false;
if (!seeded) {
ran.seed(QDateTime::currentMSecsSinceEpoch() & 0xffffffff);
seeded = true;
}
static boost::uuids::basic_random_generator<boost::mt19937> gen(&ran);
tag = gen();
}
示例2: readSeed
void readSeed(boost::program_options::variables_map& variableMap, boost::mt19937& randomSource)
{
if(variableMap.count("seed") > 0)
{
randomSource.seed(variableMap["seed"].as<int>());
}
}
示例3: range
std::vector<T1> generateRandomSet(const unsigned int size_,
const T1 min_,
const T1 max_,
const bool allowRepetition_)
{
generator.seed(std::rand());
#if BOOST_MINOR_VERSION <= 46
NumberType range(min_, max_);
boost::variate_generator<Generator&, NumberType> dist(generator, range);
#else
Generator dist(min_, max_);
#endif
std::vector<T1> numbers;
numbers.reserve(size_);
std::map<T1, bool> used;
while (numbers.size() < size_)
{
#if BOOST_MINOR_VERSION <= 46
T1 number = dist();
#else
T1 number = dist(generator);
#endif
if (allowRepetition_ || used.find(number) == used.end())
{
used[number] = true;
numbers.push_back(number);
}
}
return numbers;
}
示例4: getRandomAssignation
void UPGMpp::getRandomAssignation(CGraph &graph,
map<size_t,size_t> &assignation,
TInferenceOptions &options )
{
static boost::mt19937 rng1;
static bool firstExecution = true;
if ( firstExecution )
{
rng1.seed(std::time(0));
firstExecution = false;
}
vector<CNodePtr> &nodes = graph.getNodes();
for ( size_t node = 0; node < nodes.size(); node++ )
{
// TODO: Check if a node has a fixed value and consider it
size_t N_classes = nodes[node]->getType()->getNumberOfClasses();
boost::uniform_int<> generator(0,N_classes-1);
int state = generator(rng1);
assignation[nodes[node]->getID()] = state;
}
/*map<size_t,size_t>::iterator it;
for ( it = assignation.begin(); it != assignation.end(); it++ )
cout << "[" << it->first << "] " << it->second << endl;*/
}
示例5: setUp
void setUp() {
randomGen.seed(time(NULL));
eventLoop = new DummyEventLoop();
timerFactory = new DummyTimerFactory();
connection = boost::make_shared<MockeryConnection>(failingPorts, true, eventLoop);
//connection->onDataSent.connect(boost::bind(&SOCKS5BytestreamServerSessionTest::handleDataWritten, this, _1));
//stream1 = boost::make_shared<ByteArrayReadBytestream>(createByteArray("abcdefg")));
// connection->onDataRead.connect(boost::bind(&SOCKS5BytestreamClientSessionTest::handleDataRead, this, _1));
}
示例6: setUp
void setUp() {
crypto = boost::shared_ptr<CryptoProvider>(PlatformCryptoProvider::create());
destination = "092a44d859d19c9eed676b551ee80025903351c2";
randomGen.seed(static_cast<unsigned int>(time(NULL)));
eventLoop = new DummyEventLoop();
timerFactory = new DummyTimerFactory();
connection = boost::make_shared<MockeryConnection>(failingPorts, true, eventLoop);
//connection->onDataSent.connect(boost::bind(&SOCKS5BytestreamServerSessionTest::handleDataWritten, this, _1));
//stream1 = boost::make_shared<ByteArrayReadBytestream>(createByteArray("abcdefg")));
// connection->onDataRead.connect(boost::bind(&SOCKS5BytestreamClientSessionTest::handleDataRead, this, _1));
}
示例7: init
void init ()
{
std::chrono::high_resolution_clock::time_point now =
std::chrono::high_resolution_clock::now();
std::chrono::nanoseconds time =
std::chrono::duration_cast<std::chrono::nanoseconds>
(now.time_since_epoch () );
ran.seed (time.count() );
pid = getpid();
}
示例8: getRandomNumber
int Utils::getRandomNumber(const int min_,
const int max_)
{
generator.seed(std::time(0));
#if BOOST_MINOR_VERSION <= 46
boost::uniform_int<> range(min_, max_);
boost::variate_generator<boost::mt19937&, boost::uniform_int<> > dist(generator, range);
return dist();
#else
boost::random::uniform_int_distribution<> dist(min_, max_);
return dist(generator);
#endif
}
示例9: parse_args
void parse_args(int argc, char* argv[]) {
uint32_t seed = 0;
bool has_seed = false;
struct option long_opts[] = {
{ "help", false, nullptr, 'h' },
{ "seed", true, nullptr, 's' },
{ nullptr, 0, nullptr, 0 }
};
while (true) {
optopt = 1;
int optchar = getopt_long(argc, argv, "hs:", long_opts, nullptr);
if (optchar == -1) {
break;
}
switch (optchar) {
case 's': {
char *endptr;
seed = strtol(optarg, &endptr, 0);
if (endptr == optarg || *endptr != '\0') {
fprintf(stderr, "invalid seed value \"%s\": must be a positive "
"integer\n", optarg);
exit(1);
}
has_seed = true;
break;
}
case 'h':
print_usage(stdout, argv[0]);
exit(0);
case '?':
exit(1);
default:
// Only happens if someone adds another option to the optarg string,
// but doesn't update the switch statement to handle it.
fprintf(stderr, "unknown option \"-%c\"\n", optchar);
exit(1);
}
}
if (!has_seed) {
seed = time(nullptr);
}
printf("seed: %" PRIu32 "\n", seed);
rng.seed(seed);
}
示例10: printf
boost::unit_test::test_suite* init_unit_test_suite(int argc, char* argv[]) {
THRIFT_UNUSED_VARIABLE(argc);
THRIFT_UNUSED_VARIABLE(argv);
uint32_t seed = static_cast<uint32_t>(time(NULL));
printf("seed: %" PRIu32 "\n", seed);
rng.seed(seed);
boost::unit_test::test_suite* suite = &boost::unit_test::framework::master_test_suite();
suite->p_name.value = "ZlibTest";
uint32_t buf_len = 1024 * 32;
add_tests(suite, gen_uniform_buffer(buf_len, 'a'), buf_len, "uniform");
add_tests(suite, gen_compressible_buffer(buf_len), buf_len, "compressible");
add_tests(suite, gen_random_buffer(buf_len), buf_len, "random");
suite->add(BOOST_TEST_CASE(test_no_write));
return NULL;
}
示例11: init_unit_test_suite
bool init_unit_test_suite() {
uint32_t seed = static_cast<uint32_t>(time(NULL));
#ifdef HAVE_INTTYPES_H
printf("seed: %" PRIu32 "\n", seed);
#endif
rng.seed(seed);
boost::unit_test::test_suite* suite = &boost::unit_test::framework::master_test_suite();
suite->p_name.value = "ZlibTest";
uint32_t buf_len = 1024 * 32;
add_tests(suite, gen_uniform_buffer(buf_len, 'a'), buf_len, "uniform");
add_tests(suite, gen_compressible_buffer(buf_len), buf_len, "compressible");
add_tests(suite, gen_random_buffer(buf_len), buf_len, "random");
suite->add(BOOST_TEST_CASE(test_no_write));
return true;
}
示例12: normalvariate
float normalvariate(float mean, float sigma)
{
static bool seeded = false;
if (!seeded)
{
// seed generator with #seconds since 1970
rng.seed(static_cast<unsigned> (std::time(0)));
seeded = true;
}
// select desired probability distribution
boost::normal_distribution<float> norm_dist(mean, sigma);
// bind random number generator to distribution, forming a function
boost::variate_generator<boost::mt19937&, boost::normal_distribution<float> > normal_sampler(rng, norm_dist);
// sample from the distribution
return normal_sampler();
}
示例13: main
int main (int argc, char const *argv[]) {
// The default maze size is 20x10. A different size may be specified on
// the command line.
std::size_t x = 20;
std::size_t y = 10;
if (argc == 3) {
x = boost::lexical_cast<std::size_t>(argv[1]);
y = boost::lexical_cast<std::size_t>(argv[2]);
}
random_generator.seed(std::time(0));
maze m(x, y);
random_maze(m);
if (m.solve())
std::cout << "Solved the maze." << std::endl;
else
std::cout << "The maze is not solvable." << std::endl;
std::cout << m << std::endl;
return 0;
}
示例14: main
int main() {
rnd.seed(42);
vertex_iterator vi,vi_end;
Graph m_graph;
auto start = chrono::high_resolution_clock::now();
generate_random_graph(m_graph, 1000/*00*/, 500/*00*/, rnd); // reduced load for Coliru
std::cout << "Generated " << num_vertices(m_graph) << " vertices and " << num_edges(m_graph) << " edges in "
<< chrono::duration_cast<chrono::milliseconds>(chrono::high_resolution_clock::now() - start).count() << "ms\n"
<< "The graph has a cycle? " << std::boolalpha << has_cycle(m_graph) << "\n"
<< "starting selective removal...\n";
start = chrono::high_resolution_clock::now();
size_t count = 0;
for (boost::tie(vi, vi_end) = boost::vertices(m_graph); vi!=vi_end;)
{
if (m_graph[*vi].guid.part1 == 0) {
count++;
clear_vertex(*vi, m_graph);
//std::cout << "." << std::flush;
#if defined(STABLE_IT)
auto toremove = vi++;
boost::remove_vertex(*toremove,m_graph);
#else
boost::remove_vertex(*vi,m_graph);
boost::tie(vi, vi_end) = boost::vertices(m_graph);
#endif
} else
++vi;
}
std::cout << "Done in " << chrono::duration_cast<chrono::milliseconds>(
chrono::high_resolution_clock::now() - start).count() << "ms\n";
std::cout << "After: " << num_vertices(m_graph) << " vertices and " << num_edges(m_graph) << " edges\n";
}
示例15: main
int main(int argc, char ** argv)
{
using namespace std;
using namespace boost;
if(argc <= 3) {
cout << "usage: " << argv[0] << " <grid size> <time> <runs>" << endl;
return -1;
}
int system_random = open("/dev/random", O_RDONLY);
uint32_t seed;
read(system_random, &seed, 4);
close(system_random);
rng.seed(seed);
for(int count = 0; count < atoi(argv[3]);) {
grid_lattice grid(atoi(argv[1]));
while(true) {
double dt = grid.next_event();
grid.time += dt;
if(grid.time > atof(argv[2])) break;
grid.flip();
if(grid.empty()) grid.restart();
}
if(!grid.empty()) {
cout << grid.size() << endl;
// cout << grid << endl;
count++;
}
}
return 0;
}