Ihr Problem ist, dass der Inhalt Ihrer ARR -Variablen mit jeder Iteration überschrieben wird: die arr[k]
Überschreiben Sie, was auch immer dort ist. Die ARR -Variable muss stattdessen lokal zum Block sein:
mat = []
2.times do # avoid for... use iterators instead
row = []
2.times do
row << rand.to_s
end
mat << row
end