Matz version made me thought:
> >   persons = []
> >   1000.times{ persons.push(Person::new) }
> >     or
> >   persons = (0...1000).collect{ Person::new }

how about adding a new Array.new version

	Array.new( size_of_the_array, klass )

allowing one to say

	persons = Array.new( 1000, Person )

It could be something like:

class Array
  def new( size = 0, object = nil )
    if defined? object and object.type == Class
      ary = []
      1000.times do ary.push( object.new ) end
    else
      # the existing Array.new
    end
  end

	- Aleksi