# 随机图中心度统计Python代码

By [NingNing](https://paragraph.com/@ningning) · 2023-09-09

---

    import networkx as nx
    import random
    
    # 创建一个随机图实例
    def generate_random_graph(num_nodes, prob_edge):
        G = nx.erdos_renyi_graph(num_nodes, prob_edge)
        return G
    
    # 计算节点度中心性
    def calculate_degree_centrality(G):
        degree_centrality = nx.degree_centrality(G)
        return degree_centrality
    
    # 计算多个随机图实例下的节点度中心性的平均值
    def calculate_average_degree_centrality(num_instances, num_nodes, prob_edge):
        average_degree_centrality = {}
        for _ in range(num_instances):
            random_graph = generate_random_graph(num_nodes, prob_edge)
            degree_centrality = calculate_degree_centrality(random_graph)
            
            # 累加节点度中心性
            for node, centrality in degree_centrality.items():
                if node in average_degree_centrality:
                    average_degree_centrality[node] += centrality
                else:
                    average_degree_centrality[node] = centrality
        
        # 取平均值
        for node in average_degree_centrality:
            average_degree_centrality[node] /= num_instances
        
        return average_degree_centrality
    
    # 示例用法
    num_instances = 10000  # 随机图实例的数量
    num_nodes = 50     # 节点数量
    prob_edge = 0.2     # 边的概率
    
    average_degree_centrality = calculate_average_degree_centrality(num_instances, num_nodes, prob_edge)
    print("平均度中心性:")
    for node, centrality in average_degree_centrality.items():    
        if centrality == 1:    
            print(f"Node {node}: {centrality}")

---

*Originally published on [NingNing](https://paragraph.com/@ningning/python)*
