本文整理汇总了C++中boost::mt19937类的典型用法代码示例。如果您正苦于以下问题:C++ mt19937类的具体用法?C++ mt19937怎么用?C++ mt19937使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了mt19937类的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: 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;*/
}
示例3: readSeed
void readSeed(boost::program_options::variables_map& variableMap, boost::mt19937& randomSource)
{
if(variableMap.count("seed") > 0)
{
randomSource.seed(variableMap["seed"].as<int>());
}
}
示例4: 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();
}
示例5: exit
int
main(int argc, char *argv[])
{
// Parse and read the command line arguments.
if (argc != 5)
{
cerr << "Usage: " << PNAME
<< " <min-weight> <max-weight> <#vertices> <#tests>\n";
exit(1);
}
long int min_weight = strtol(argv[1], 0, 0);
long int max_weight = strtol(argv[2], 0, 0);
long int n_vertices = strtol(argv[3], 0, 0);
long int n_tests = strtol(argv[4], 0, 0);
if (errno)
{
cerr << "Bad arguments\n";
exit(1);
}
// Check consistency of command line arguments.
if (n_tests < 0)
{
cerr << "the number of tests must be a positive integer\n";
exit(1);
}
if (n_vertices > numeric_limits<unsigned>::digits)
{
cerr << "Too many vertices\n"
<< "Maximum n.o. vertices is "
<< numeric_limits<unsigned>::digits << "\n";
exit(1);
}
if (n_vertices < 2)
{
cerr << "Too few vertices\n"
<< "must be at least two\n";
exit(1);
}
if (min_weight > max_weight)
{
cerr << "min weight must be greater than max weight\n";
exit(1);
}
if (abs(max_weight) >= numeric_limits<int>::max() / n_vertices ||
abs(min_weight) >= numeric_limits<int>::max() / n_vertices)
{
cerr << "weights too large\n";
exit(1);
}
// Initialize the random number generator.
timeval tv;
gettimeofday(&tv, 0);
g_generator.seed(tv.tv_sec * 1000000 + tv.tv_usec);
boost::uniform_int<int> uniform_int_dist(min_weight, max_weight);
boost::variate_generator<mt19937, uniform_int<int> > rng_i(g_generator, uniform_int_dist);
// Perform the tests.
enum {MAX_SPAN_0, MAX_SPAN_1, MAX_SPAN_2,
MAX_NOSPAN_0, MAX_NOSPAN_1, MAX_NOSPAN_2,
MIN_SPAN_0, MIN_SPAN_1, MIN_SPAN_2,
MIN_NOSPAN_0, MIN_NOSPAN_1, MIN_NOSPAN_2,
N_CASES};
string case_names[] = {
"MAX_SPAN_0", "MAX_SPAN_1", "MAX_SPAN_2",
"MAX_NOSPAN_0", "MAX_NOSPAN_1", "MAX_NOSPAN_2",
"MIN_SPAN_0", "MIN_SPAN_1", "MIN_SPAN_2",
"MIN_NOSPAN_0", "MIN_NOSPAN_1", "MIN_NOSPAN_2"
};
complete_graph g(n_vertices);
multi_array<int, 2> weights(extents[n_vertices][n_vertices]);
vector<Vertex> parent(n_vertices);
Vertex roots[] = {0, 1};
vector<Edge> branching;
vector< vector< Edge > > all_branchings(N_CASES);
vector<int> ans(N_CASES);
while (n_tests--)
{
// Clear all the branchings from previous iteration.
BOOST_FOREACH (vector<Edge> &vec, all_branchings)
{
vec.clear();
}
// create new weights
int *end = weights.origin() + n_vertices * n_vertices;
for (int *ip = weights.origin(); ip != end; ++ip)
{
*ip = rng_i();
}
//.........这里部分代码省略.........
示例6: main
//.........这里部分代码省略.........
//, 0, 0, 0, 1, 1
///*--------------------------------- Graph 23 ----------------------------------*/
// Eigen::MatrixXi g23_adj(11,11);
//, 0, 1, 1
//, 1, 0, 1
//, 1, 1, 0
///*--------------------------------- Graph 24 ----------------------------------*/
// Eigen::MatrixXi g24_adj(11,11);
// g24_adj << 0, 1, 1, 0, 1, 1, 0, 0, 0,
// 1, 0, 1, 1, 1, 0, 0, 0, 0,
// 1, 1, 0, 1, 1, 0, 1, 0, 0,
// 0, 1, 1, 0, 1, 1, 1, 1, 0,
// 1, 1, 1, 1, 0, 0, 1, 0, 0,
// 1, 0, 0, 1, 0, 0, 0, 0, 0,
// 0, 0, 1, 1, 1, 0, 0, 0, 0,
// 0, 0, 0, 1, 0, 0, 0, 0, 1,
// 0, 0, 0, 0, 0, 0, 0, 1, 0;
///*--------------------------------- Graph 25 ----------------------------------*/
// Eigen::MatrixXi g25_adj(11,11);
// g25_adj << 0, 1, 1, 0, 0,
// 1, 0, 1, 1, 1,
// 1, 1, 0, 0, 0,
// 0, 1, 0, 0, 1,
// 0, 1, 0, 1, 0;
static boost::mt19937 rng;
rng.seed(std::time(0));
size_t N_graphsForTraining = 9;
size_t absoluteSuccess_Greedy = 0;
size_t absoluteSuccess_ICM = 0;
size_t absoluteSuccess_AlphaExpansion = 0;
size_t absoluteSuccess_AlphaBetaSwap = 0;
size_t absoluteSuccess_LBP = 0;
size_t absoluteSuccess_TRP = 0;
size_t absoluteSuccess_RBP = 0;
size_t absoluteNumberOfNodes = 0;
size_t N_repetitions = 100;
for ( size_t rep = 0; rep < N_repetitions; rep++ )
{
vector<size_t> graphs_to_train;
size_t N_graphsAdded = 0;
while ( N_graphsAdded < N_graphsForTraining )
{
boost::uniform_int<> int_generator(0,11);
int rand = int_generator(rng);
if ( std::find(graphs_to_train.begin(),graphs_to_train.end(),rand)
== graphs_to_train.end() )
{
graphs_to_train.push_back(rand);
N_graphsAdded++;
}
示例7: 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;
}
示例8: 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));
}
示例9: 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));
}
示例10: 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();
}
示例11: 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);
}
示例12: 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;
}
示例13: 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;
}
示例14: 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;
}
示例15: 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";
}