2010/4/7 Marc-Andre Lafortune <ruby-core-mailing-list / marc-andre.ca>:
>
> Thanks for the reply, but I don't understand. What will be zero? Under
> what circumstances is this needed?

The seed specify a initialization function of Mersenne Twister
(init_genrand or init_by_array) and its arguments.
init_genrands takes 32 bit integer.
init_by_array takes a list of 32bit integers.

The seed less than 2**32 means init_genrand should be used.

Otherwise init_by_array is used.
The list for given for init_by_array are generated from
the argument by splitting for each 32bit word.
However the most significant word of the list is always non-zero.
So if we pass the list to init_by_array, we cannot specify zero as the last
word of the argument of init_by_array.

The removing 1 makes possible to us to specify any arguments to init_by_array.
(except empty list.)
-- 
Tanaka Akira