I would like to pick a random real normal (i.e. commuting with its transpose) matrix and I wonder if it can be done easily. I thought whether it would be possible to use a similar trick to drawing a symmetric matrix by first generating an arbitrary matrix A, and then setting $A=(A+A^T)/2$. Is there any similar normalization trick for matrices. I'd be grateful for any help.



How to draw a random normal matrix?
Any real normal matrix $M$ can be written as $M=O\,\mathrm{diag}(B\_1,\ldots,B\_\ell)\,O^t$ where $O$ is orthogonal and where the blocks $B\_j$ are either $1\times 1$ real numbers or $2\times2$ matrices of the form:
$$
\left[\begin{matrix} a & b \\- b& a\end{matrix}\right],\qquad a\in\mathbb R,\qquad b>0.
$$
This provides a way to sample a real $n\times n$ normal matrix whose associated measure has the full space of real normal matrices for support:


$\bullet$ Sample $O$ according to the Haar measure on the $n$-orthogonal group


$\bullet$ Randomly pick the number of blocs which will be of size $2\times 2$ between $0$ and $\lfloor \tfrac n2\rfloor$ uniformly


$\bullet$ Sample each free parameter of the blocks the blocks $B\_j$'s according to, say, i.i.d standard Gaussian random variables for the real parameters and exponential $\mathcal E(1)$ random variables for the positive parameters. 


