We want to write a card game in Ethereum. What are effective and secure ways of shuffling a deck of cards in a contract, and dealing them to players? It needs to be done in a way so that no one can determine each other's cards and what the shuffled deck is, by examining the open source contract code and shuffling transactions which are all on the public Ethereum blockchain.
EDIT: as comment #2 says "this is significantly different enough to warrant a separate question. Shuffling cards is much more difficult than simple RNG." (and it mentions a possible answer)