From: Stefan Matthias Aust Date: 2001-05-01T04:40:03+09:00 Subject: [ruby-talk:14452] How to do it the Ruby-way 3 First a question: Why is p (1..10).to_a interpreted as (p (1..10)).to_a >> 1..10 instead of p ((1..10).to_a) >> [1, ..., 10] It gave me a hard time to figure this out, especially as "nil.to_a" (nil is the result of p(..)) has a meaning and doesn't throw an error. I would have expected that, if I leave a SPACE between the method name and the open parenthesis, it is NOT taken as the argument to "p" but instead the "." has a higher precedence. At least this would be a useful assumption IMHO. But my actual and original question is another one. In Squeak Smalltalk, I can send #shuffle to an Array (or any SequenceableCollection I think) to randomize an array. Is there a similar built-in mehtod in Ruby? It's of course easy to add (see below - code improvements are welcomed!), but it's so useful I'd like to see it being part of the built-in stuff. class Array def shuffle clone.shuffle! end def shuffle! len = length (0...len).each {|i| j = rand len self[i], self[j] = self[j], self[i] } self end end p ((1..100).to_a.shuffle) BTW, is there just one global random number generator? bye -- Stefan Matthias Aust \/ Truth Until Paradox