A method for the reliable generation of random networks that model known social networks is becomingincreasingly desirable as a tool in the study of how these networks are structured and how they change overtime. This paper will present an algorithm capable of growing large directed networks that are designed tomodel a range of observed social networks with regard to several key measures. Our algorithm is looselybased on the Barabasi-Albert algorithm for scale-free graph generation. However, our model includes manyadditional parameters that play key roles in social networks, including a means of assigning attributes toindividuals in the network, which allows for the exploration of networks in which there is a certain degree ofdiversity. In doing so, we have produced an algorithm that is not only intuitive in its implementation, butalso extremely exible and easily adaptable to a variety of situations. Furthermore, the algorithm exhibitsstructural traits present in social networks but not produced by the Barabasi-Albert model. We will discussdirected and undirected versions of the algorithm, show how each version performs with regard to several keymetrics of the network, examine how the algorithm compares to observed real-world networks, and discussextensions of the model that could further enrich its modeling capabilities.