The prevalence of multi-core processors has resulted in a surge of interest in determinism in parallel programming and challenges of non-determinism have been well documented.
The use of a pseudorandom number generator is often not sufficient to ensure that players are unable to predict the outcome of a shuffle.
A clever gambler might guess precisely the numbers the generator will choose and so determine the entire contents of the deck ahead of time, allowing him to cheat; for example, the Software Security Group at Reliable Software Technologies was able to do this for an implementation of Texas Hold 'em Poker that is distributed by ASF Software, Inc, allowing them to consistently predict the outcome of hands ahead of time.
The mercury logic-functional programming language establishes different determinism categories for predicate modes as explained in the reference.
[8][9] Haskell provides several mechanisms: As seen in Standard ML, OCaml and Scala In Java, the null reference value may represent an unsuccessful (out-of-domain) result.