Hola , tu dispones de un cuadrado de $$n$$ por $$n$$ cuadraditos , cada cuadradito está numerado del 0 al $$\color {blue}n^2-1\color {black}$$
por lo que vi que has hecho , escojes una posición al azar $$x$$ entre esos valores y un tamaño al azar $$m$$ para crear un dibujo de un cuadrado de color al azar entre los que permites.
corrijo porque la numeración de los cuadraditos empieza en 0 y no en 1
primero debes checar que la posición $$x$$, en fila y columna no te permite escoger de todos los tamaños de cuadrados que quieras , supon $$n=4$$, si me paro en el cuadrado 6 ,y deseo pintar cuadrados de lado aleatorio de longitud $$m$$ allí solo puedo pintar ese cuadradito 6 si resulta que $$m=1$$ o si $$m=2$$ puedes pintar el 6,7,10 y 11 , formando un cuadrado de 2x2, pero para $$m=3$$ ya te queda fuera del cuadrado de 4x4, es decir $$m$$ lo puedes escoger de un tamaño menor a $$n$$ menos el máximo entre número de fila y número de columna que obtienes del número x)
$$\color {blue}fila= int(x/n)+1\color {black}$$
las filas van de 1 a n
$$\color {blue}columna=x-(fila-1)*n+1\color {black}$$
las columnas van de 1 a n
si $$n-fila>n-columna$$ entonces
$$q=n-columna+1$$
sino
$$q=n-fila+1$$
luego $$m= random (entre \ 1\ y\ q)$$
una vez que tienes todos estos datos $$x, n, m,$$ y $$c(color)$$
haces un for $$a$$ de 1 a m
y otro for anidado $$b$$ tambien de 1 a m
$$z=x+(b-1)* (n*(a-1)+1)$$
aplicar color c a los cuadraditos número z
listo
no se en que lenguaje programas así que no puedo pasar codigo porque no conozco su sintaxis
si tienes dudas imprime los valores de z y veras que son los números de los cuadraditos que debes pintar.
Saludos