Almost all of them treat the set of cards as a list and write the program to shuffle the list.
One approach is to emulate the human shuffling:
Hindu Shuffle; Riffle shuffle
Other techniques are discussed in more details in wikipedia
Here is an interesting but not optimal way(O(n lgn)) to shuffle a list:
In Ocaml:
let shuffle l1 =
let sortComparator x y =
(
match (Random.int 3) with
0 -> 0
| 1 -> -1
| 2 -> 1
| _ -> failwith "Error in shuffle"
)
in
List.sort sortComparator l1
;;
C++ Code:
template < class T >
bool sortComparator(T x, T y){
if(rand % 2 == 0)
true;
else
false
}
template < class T >
vector < t > shuffle(vector < t > cards) {
sort(cards.begin(), cards.end(), sortComparator);
return cards;
}
No comments:
Post a Comment