2 Added some explanation
source | link

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

matrix

SeedRandom@42;
RandomInteger[14, {2, 15, 2, 2}] // MatrixForm

matrix

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

matrix

1
source | link

SeedRandom@42;
RandomInteger[14, {2, 15, 2, 2}] // MatrixForm

matrix