Since we're talking bitcoin, then the most sensible way would be
- Take the N last confirmed blocks at time of extraction
- Hash them
- Sign hash with private key
- Treat the signed hash as a huge random integer - extract from it the random number(s) needed for your lottery.
- Anyone can verify that you haven't made it up by verifying the signed hash (using your public key) against the hash of the well-known last N confirmed blocks at time of extraction
- Profit!
The person with the private key could be cheating by generating the last block needed and not submitting if it doesn't work in their favor. They can slightly increase their odds.
I know I've tried something very similar. Still not cheat proof.