Posted to tcl by Zarutian at Fri Nov 16 02:43:42 GMT 2007view pretty
proc create {deck} { set cards "" foreach type {S H D C} { foreach value {A 2 3 4 5 6 7 8 9 10 J Q K} { lappend cards [set value][set type] } } set j 52 while true { set r [expr rand()] set k [expr int(($j * $r) + 1)] set t1 [lindex $cards [expr $k -1]] set t2 [lindex $cards [expr $j -1]] lset cards [expr $j -1] $t1 lset cards [expr $k -1] $t2 incr j -1 if {$j > 1} { continue } else { break } } upvar $deck d set d $cards }