Use this if you are using igraph from R

This function generates a non-growing random graph with edge probabilities proportional to node fitness scores.

sample_fitness(no.of.edges, fitness.out, fitness.in = NULL, loops = FALSE, multiple = FALSE)

`no.of.edges` |
The number of edges in the generated graph. |

`fitness.out` |
A numeric vector containing the fitness of each vertex. For directed graphs, this specifies the out-fitness of each vertex. |

`fitness.in` |
If If this argument is not |

`loops` |
Logical scalar, whether to allow loop edges in the graph. |

`multiple` |
Logical scalar, whether to allow multiple edges in the graph. |

This game generates a directed or undirected random graph where the
probability of an edge between vertices *i* and *j* depends on the
fitness scores of the two vertices involved. For undirected graphs, each
vertex has a single fitness score. For directed graphs, each vertex has an
out- and an in-fitness, and the probability of an edge from *i* to
*j* depends on the out-fitness of vertex *i* and the in-fitness of
vertex *j*.

The generation process goes as follows. We start from *N* disconnected
nodes (where *N* is given by the length of the fitness vector). Then we
randomly select two vertices *i* and *j*, with probabilities
proportional to their fitnesses. (When the generated graph is directed,
*i* is selected according to the out-fitnesses and *j* is selected
according to the in-fitnesses). If the vertices are not connected yet (or if
multiple edges are allowed), we connect them; otherwise we select a new
pair. This is repeated until the desired number of links are created.

It can be shown that the *expected* degree of each vertex will be
proportional to its fitness, although the actual, observed degree will not
be. If you need to generate a graph with an exact degree sequence, consider
`sample_degseq`

instead.

This model is commonly used to generate static scale-free networks. To
achieve this, you have to draw the fitness scores from the desired power-law
distribution. Alternatively, you may use `sample_fitness_pl`

which generates the fitnesses for you with a given exponent.

An igraph graph, directed or undirected.

Tamas Nepusz ntamas@gmail.com

Goh K-I, Kahng B, Kim D: Universal behaviour of load
distribution in scale-free networks. *Phys Rev Lett* 87(27):278701,
2001.

N <- 10000 g <- sample_fitness(5*N, sample((1:50)^-2, N, replace=TRUE)) degree_distribution(g) ## Not run: plot(degree_distribution(g, cumulative=TRUE), log="xy")

[Package *igraph* version 1.2.4 Index]