Methods and Applications of Synthetic Data Generation