Just one question. How are you making it actually random? I've done ALOT of research on smart contracts and it is very difficult to get a good random number from a smart contract. You can get a "mostly" random number, but it can still be calculated.
Our random number generation uses those provably-honset 3rd service Oraclize.it and Random.ORG.
You can have a look at Random.org