We recently discussed this on forum[0] and on office hours. Basically they are few issues as far as I can see.
- Try & Abort ( basically interact with the contract in a brute force way till you get the result you want, panic if you donβt like the result)
- Your transaction is executed on multiple execution nodes and result is compared (if you had different random on those nodes, they would disagree) So I think syncing the random for transaction would be a bit problematic
I think second issue can be solved, also there are some ideas for the first one.
Sooner or later I believe we will have random on chain.
[0] http://forum.flow.com/t/randomness-for-nft-packs-on-flow/1830/5