Lloyd Linklater wrote: > dang it! I *knew* that I should have been thinking more ruby and less > pascal. This may look more rubyish: > > def arr_rand(ar) > arr = [] > while ar.length > 0 {arr << ar.delete_at(rand(ar.length))} > arr > end Yes, that is fairly simple to understand. But it is equivalent to sort_by {rand} in that it does not actually change the array that is passed in. How about this variation? def randomize!(ary) temp = ary.dup ary.clear ary << temp.delete_at(rand(temp.length)) until temp.empty? ary # this line is optional--want to return the array # we've just randomized? end Dan