Posted to tcl by mjanssen at Thu Aug 30 15:36:47 GMT 2007view pretty

proc shuffle list {
    set len [llength $list]
    while {$len} {
        set n [expr {int($len*rand())}]
        set tmp [lindex $list $n]
        lset list $n [lindex $list [incr len -1]]
        lset list $len $tmp
    }
    return $list
 }

 proc range {start end} {
   set res {}
   for {set i $start} {$i<=$end} {incr i} {
       lappend res $i
   }
   return $resr
 }

 proc draw {start end number} {
    lrange [shuffle [range $start $end]] 0 $number-1
}