1 #ifndef __MINLCA_UTILS_GENERATORS_BINOMIAL_HH
2 #define __MINLCA_UTILS_GENERATORS_BINOMIAL_HH
4 #include <lemon/smart_graph.h>
5 #include <lemon/random.h>
18 template<
typename BaseGraph = lemon::SmartGraph>
26 TEMPLATE_GRAPH_TYPEDEFS(Graph);
36 template<
typename Number =
int>
58 _p = std::max(0.0, std::min(p, 1.0));;
72 this->reserveNode(_n);
73 this->reserveEdge(static_cast<int>(0.5 * _p * _n * (_n - 1)));
75 for (
int u = 0; u <
_n; ++u) {
79 for (
int u = 0; u <
_n; ++u)
80 for (
int v = u + 1; v <
_n; ++v)
81 if (
_r->boolean(_p)) {
82 this->addEdge(this->nodeFromId(u), this->nodeFromId(v));
Class defining binomial random graphs.
double p() const
Retrieve the edge probability.
BinomialRandom(lemon::Random &r)
Constructor with custom random number generator.
Graph & init(int n, double p)
Initialise the generator.
virtual void generate()
Generate graph.
lemon::Random * _r
Random number generator.
void seed(Number seed)
Change the random number generator seed.
double _p
Edge probability.
Contains base definitions for defining particular random graphs.
Default namespace Default namespace for MinLCA algorithms.
BinomialRandom(Number seed=0)
Constructor with seed.
int _n
Number of vertices.
Base class for random graph generators.