def gnp_random_connected_graph(env,n, p):
graph_seed = np.random.default_rng(2021)
network = nx.Graph()
node_dict = {}
for node in range(n):
new_node = Node(env,node, network)
node_dict[node] = new_node
network.add_nodes_from(node_dict.items())
print("Network nodes 1:",network.nodes)
edges = combinations(list(range(1,(n+1),1)), 2)
link_dict = {}
for id, node_edges in groupby(edges, key=lambda x: x[0]):
rate = random.randint(8000000,40000000) #bps
distance = random.randint(10,185) #meters
node_edges = list(node_edges)
random_edge = tuple(graph_seed.choice(node_edges))
link_dict[random_edge] = Link(env,random_edge,rate,distance,network)
for e in node_edges:
if graph_seed.random() < p:
link_dict[e] = Link(env,e,rate,distance,network)
network.add_edges_from(link_dict.items())
print("Network nodes 2:",network.nodes)
return network