Input: individual . 
) //Determine candidate new neighbors for v. 
) . 
) if then 
) foreach in do 
) Compute the bias due to degree constraints: 

) Compute the bias due to the bivariate degree distribution: 

() Compute the bias due to bivariate attribute distributions: 

) Compute propensity of edge as the product of the above three biases: 

) Normalize propensity to obtain a distribution over : 

) choose from randomly according to distribution . 
) //Add the edge connecting to . 
) 