I like the 1st method simply because its a generative approach vs a discriminative approach of the 2nd and 3rd one. Put it another way. This is analogous to yielding prime numbers through a sieve generation method vs a filtering method that checks for primality.