def shuffle_graph(data_graph: 'NetworkXGraphObject', shuffle_number: int,
    seed: int=None) ->'NetworkXGraphObject':
    """
        Returns a new graph, shuffling the order of the nodes in the input data_graph, but the relationship between the nodes remains the same. The data_graph doesn't change.
        
        Parameters
        ----------
        data_graph : NetworkXGraphObject
            A NetworkX graph object.
        
        shuffle_number : integer
            Set the number of shuffles.
        
        seed : integer, random_state, or None (default)
            Indicator of random number generation state.
        
        Returns
        -------
        new_order_data_graph : NetworkXGraphObject
            Returns a new graph that shuffles the order of nodes but keeps the relationships between them the same.
        
        Examples
        --------
        >>> from networkx.classes.graph import Graph
        >>> G = Graph({0: {1: {}}, 1: {0: {}, 2: {}}, 2: {1: {}, 3: {}}, 3: {2: {}, 4: {}}, 4: {3: {}}})
        >>> shuffle_graph(G, 1, 65535).adj  #Set seed to make the results repeatable.
        AdjacencyView({3: {2: {}, 4: {}}, 4: {3: {}}, 1: {0: {}, 2: {}}, 2: {3: {}, 1: {}}, 0: {1: {}}})
    """
    import random
    from networkx.classes.graph import Graph
    from networkx.classes.digraph import DiGraph
    from networkx.classes.multigraph import MultiGraph
    from networkx.classes.multidigraph import MultiDiGraph
    from networkx.convert import from_dict_of_dicts
    random.seed(seed)
    list_of_nodes = list(data_graph.nodes)
    for _i in range(shuffle_number):
        random.shuffle(list_of_nodes)
    new_order_data_graph = dict()
    for node in list_of_nodes:
        new_order_data_graph.update({node: data_graph[node]})
    if data_graph.is_directed():
        if data_graph.is_multigraph():
            new_order_data_graph = from_dict_of_dicts(new_order_data_graph,
                create_using=MultiDiGraph, multigraph_input=True)
        else:
            new_order_data_graph = from_dict_of_dicts(new_order_data_graph,
                create_using=DiGraph)
    elif data_graph.is_multigraph():
        new_order_data_graph = from_dict_of_dicts(new_order_data_graph,
            create_using=MultiGraph, multigraph_input=True)
    else:
        new_order_data_graph = from_dict_of_dicts(new_order_data_graph,
            create_using=Graph)
    return new_order_data_graph
