2 Added some explanation edited Jun 23 '14 at 14:18 m_goldberg 91.7k88 gold badges7575 silver badges209209 bronze badges You don't really want to use ConstantArray which always populates the matrix with its first argument repeated as many times as necessary. That first argument is only evaluated once which explains your result. To get what you want, use RandomInteger directly. It can build matrices. SeedRandom@42; RandomInteger[14, {2, 15, 2, 2}] // MatrixForm  SeedRandom@42; RandomInteger[14, {2, 15, 2, 2}] // MatrixForm  You don't really want to use ConstantArray which always populates the matrix with its first argument repeated as many times as necessary. That first argument is only evaluated once which explains your result. To get what you want, use RandomInteger directly. It can build matrices. SeedRandom@42; RandomInteger[14, {2, 15, 2, 2}] // MatrixForm  1 answered Jun 23 '14 at 14:06 m_goldberg 91.7k88 gold badges7575 silver badges209209 bronze badges SeedRandom@42; RandomInteger[14, {2, 15, 2, 2}] // MatrixForm