Graybat  1.1
Graph Approach for Highly Generic Communication Schemes Based on Adaptive Topologies
Random.hpp
1 #pragma once
2 
3 #include <vector> /* std::vector */
4 #include <stdlib.h> /* srand, rand */
5 
6 namespace graybat {
7 
8  namespace mapping {
9 
21  struct Random {
22 
23  Random(int seed)
24  : seed(seed){
25 
26  }
27 
28  template<typename T_Graph>
29  std::vector<typename T_Graph::Vertex> operator()(const unsigned processID, const unsigned processCount, T_Graph &graph){
30 
31 
32  typedef typename T_Graph::Vertex Vertex;
33  srand(seed);
34  std::vector<Vertex> myVertices;
35  unsigned vertexCount = graph.getVertices().size();
36 
37 
38  if(processID <= vertexCount){
39  for(Vertex v: graph.getVertices()){
40  unsigned randomID = rand() % processCount;
41  if(randomID == processID){
42  myVertices.push_back(v);
43  }
44 
45  }
46  }
47 
48 
49  return myVertices;
50  }
51 
52  private:
53  int seed;
54 
55  };
56 
57  } /* mapping */
58 
59 } /* graybat */
Definition: Random.hpp:21
Definition: BiStar.hpp:8