I don't frequent this community so please give criticism if this is a poor question.

I am trying to make a tool which generates a small (say, 4x4) matrix with integer entries which has a "nice" Jordan normal form — i.e., one that can be computed by hand. The purpose is for manual practice.

Here is what I have:

      A := RandomInteger[{-1, 1}, {4, 4}](*This generates a random 4x4 matrix*)
      Dynamic[MatrixForm[A]](*This is the random matrix*)
      Dynamic[MatrixForm[Part[JordanDecomposition[A], 2]]](*Here is its Jordan Normal form*)


As it is, about $1$ in $10$ of these matrices has relatively nice Jordan Normal form, and that is with random entries of $-1,0$, and $1$. Complex eigenvalues are fine, but obviously eigenvalues like `Root[#^4-#^2+3 #+2&, 1]` are intractable.

The easiest solution here would be to somehow loop the random generator until the entries in the final output are rational complex numbers. I have tried and failed to use conditional statements to achieve this, so any help would be appreciated.