discrete data generation