There really isn't a whole lot of choice in how to do this big-picture wise. The cost of doing it post-generation would be way too high, so you need to do it while generating/sampling, meaning it has to be a statistical biasing of the sampling process.