さっそくの回答ありがとうございます。

>
> > a = [[1]]*3
> >
> > p a      # => [[1],[1],[1]]
> >
> > a.each_with_index do |b,i|
> >     b << 1
> > end
> >
> > p a
>
> これだと、[1] が1個しか作られませんね。
> a[0], a[1], a[2]も同じ [1] を指しているからです。
>

なるほど。了解しました。
ちなみに、each_with_indexを使ったのは、もとのスクリプトから抜粋したから
ですが、質問するときはより簡潔なサンプルの方がよいですね。
以後できるだけ心がけようと思います。

> こんなのではどうでしょう?
> うーん、俺的には最後のやつが好きかな。
> a = (1..3).collect{ [1] }
> a = (0...3).collect{ [1] }
> a = Array.new(3).collect{ [1] }
>

参考にさせていただきます。

以上