Note that the call rand(a..b)
does not generate a random number. Rather, it generates a procedure which will generate a random number in the given range. What you want is
R:= rand(2..99):
n:= R():
while isqrt(n)^2 = n do n:= R() end do:
n;