sna (version 2.6)

rgraph: Generate Bernoulli Random Graphs


rgraph generates random draws from a Bernoulli graph distribution, with various parameters for controlling the nature of the data so generated.


rgraph(n, m=1, tprob=0.5, mode="digraph", diag=FALSE, replace=FALSE,



The size of the vertex set (|V(G)|) for the random graphs


The number of graphs to generate


Information regarding tie (edge) probabilities; see below


``digraph'' for directed data, ``graph'' for undirected data


Should the diagonal entries (loops) be set to zero?


Sample with or without replacement from a tie list (ignored if tielist==NULL


A vector of edge values, from which the new graphs should be bootstrapped

logical; should the resulting graphs be returned in edgelist form?


A graph stack


rgraph is a reasonably versatile routine for generating random network data. The graphs so generated are either Bernoulli graphs (graphs in which each edge is a Bernoulli trial, independent conditional on the Bernoulli parameters), or are bootstrapped from a user-provided edge distribution (very handy for CUG tests). In the latter case, edge data should be provided using the tielist argument; the exact form taken by the data is irrelevant, so long as it can be coerced to a vector. In the former case, Bernoulli graph probabilities are set by the tprob argument as follows:

  1. If tprob contains a single number, this number is used as the probability of all edges.

  2. If tprob contains a vector, each entry is assumed to correspond to a separate graph (in order). Thus, each entry is used as the probability of all edges within its corresponding graph.

  3. If tprob contains a matrix, then each entry is assumed to correspond to a separate edge. Thus, each entry is used as the probability of its associated edge in each graph which is generated.

  4. Finally, if tprob contains a three-dimensional array, then each entry is assumed to correspond to a particular edge in a particular graph, and is used as the associated probability parameter.

Finally, note that rgraph will symmetrize all generated networks if mode is set to ``graph'' by copying down the upper triangle. The lower half of tprob, where applicable, must still be specified, however.


Erdos, P. and Renyi, A. (1960). “On the Evolution of Random Graphs.” Public Mathematical Institute of Hungary Academy of Sciences, 5:17-61.

Wasserman, S., and Faust, K. (1994). Social Network Analysis: Methods and Applications. Cambridge: Cambridge University Press.

See Also

rmperm, rgnm, rguman


#Generate three graphs with different densities

#Generate from a matrix of Bernoulli parameters
# }