in reply to
Re^2: A bad shuffle
in thread A bad shuffle
perlfaq4: How do I shuffle an array randomly? not only gives a "canonical" implementation of the Fisher-Yates algorithm in Perl, but also refers to the List::Util module's shuffle function, which is an implementation of Fisher-Yates in C. The algorithm is also implemented in Abigail's Algorithm::Numerical::Shuffle, the doco of which gives some citations into the literature (Knuth, Fisher&Yates, etc.).
The Fisher-Yates has also been discussed many times on clpm.
(You can do a Google Groups search. My ego compels me to link to
this posting by yrs trly, which isn't about F-Y, but uses it.)