Which is the difference between these two functions?
static.power.law.game
barabasi.game
static.power.law.game is a non-growing model; you give it the desired number of nodes and edges and then it will generate a graph for you whose degree distribution should be a power-law _in the infinite limit_. (It won't be if the number of nodes is relatively small, or if the number of edges is relatively large compared to the number of nodes). Under the hood, it assigns each node a "stickiness score" and creates edges between nodes with a probability that is proportional to the "stickiness" of their endpoints.
barabasi.game is a growing-model. It also generates power-law degree distributions in the infinite limit, but:
1) the out-degree of each node will be the same (in the canonical form of the model)
2) you need to specify the number of nodes and the number of outbound edges _per node_ in advance
3) since it's a growing model and nodes are added along with their edges one by one, each edge will point from a node that was added _later_ towards a node that was added _earlier_. In other words, there will be a topological ordering between the nodes and the generated graph will be acyclic
Which would be best for this purpose?
It depends on the process that you want to model. If your process is a growing one, the BA model is probably a better choice. If your process is non-growing and / or there is no directionality in the relations, use the static power-law model.
T.