Boost图形库,鄂尔多斯仁义生成器。图总是有相同数量的边

Boost图形库,鄂尔多斯仁义生成器。图总是有相同数量的边,boost,network-programming,graph-theory,boost-graph,random-seed,Boost,Network Programming,Graph Theory,Boost Graph,Random Seed,我正在尝试使用boost图形库生成鄂尔多斯仁义图 在下面的代码中,它取自 网络始终具有相同数量的边(对于特定的p值,它们不应具有相同数量的边)。我尝试过使用不同的随机种子,但没有效果 谢谢你的帮助 #include <boost/graph/adjacency_list.hpp> #include <boost/graph/erdos_renyi_generator.hpp> #include <boost/random/linear_congruential.h

我正在尝试使用boost图形库生成鄂尔多斯仁义图

在下面的代码中,它取自

网络始终具有相同数量的边(对于特定的p值,它们不应具有相同数量的边)。我尝试过使用不同的随机种子,但没有效果

谢谢你的帮助

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/erdos_renyi_generator.hpp>
#include <boost/random/linear_congruential.hpp>
#include <iostream>

using namespace std;

typedef boost::adjacency_list<> Graph;
typedef boost::sorted_erdos_renyi_iterator<boost::minstd_rand, Graph> ERGen;

int main()
{
  boost::minstd_rand gen;
  // Create graph with 100 nodes and edges with probability 0.05
  Graph g(ERGen(gen, 100, 0.05), ERGen(), 100);
  cout << num_edges(g)<<endl;
  return 0;
}

#包括
#包括
#包括
#包括
使用名称空间std;
typedef boost::邻接列表图;
typedef boost::sorted_erdos_renyi_iterator ERGen;
int main()
{
推进:明特德·兰特发电厂;
//创建具有100个节点和边的图,概率为0.05
图g(ERGen(gen,100,0.05),ERGen(),100);

cout您应该使用随机种子:

boost::minstd_rand gen(std::random_device{}());
PRNG的本质是从给定状态生成确定性输出

#include <boost/graph/adjacency_list.hpp>
#include <boost/graph/erdos_renyi_generator.hpp>
#include <boost/random/linear_congruential.hpp>
#include <iostream>
#include <random>

using namespace std;

typedef boost::adjacency_list<> Graph;
typedef boost::sorted_erdos_renyi_iterator<boost::minstd_rand, Graph> ERGen;

int main() {
    boost::minstd_rand gen(std::random_device{}());
    // Create graph with 100 nodes and edges with probability 0.05
    Graph g(ERGen(gen, 100, 0.05), ERGen(), 100);
    cout << num_edges(g) << endl;
}
515
491
518
511