Sampling random points with unit norm on the surface of an n-hyperboloid I want to randomly sample points (with Gaussian or Uniform distribution) that have unit norm and lie on a hyperboloid of the form
$x^T Ax +b^T x +c =0 $.
$\|x\|=1$
Here, $x$ is a n-vector. $A \in R^{n \times n}$ is a real, symmetric matrix with both positive and negative real eigenvalues. $b$ is a real n-vector and $c$ is a scalar. Of course in some modified coordinate system $y= g(x)$, the above equation can be rewritten as
$y^T D y= c_y$
Where $D$ is some diagonal matrix with real eigenvalues. How can I sample random points on the surface from this?  I am familiar with sampling points from an n-sphere.  Is it possible to somehow 'rotate ' points sampled from a n-sphere to the hyperboloid surface ?
 A: I'm not sure what exactly you mean by “randomly sampling points (with Gaussian or uniform distribution) that lie on a hyperboloid”. Since you’d be OK with either of those, I gather you don’t want to exactly simulate a particular distribution but just want reasonably distributed random points on that surface. If so, you could do the following:
Diagonalize $A$ and shift the origin in order to bring the equation for the hyperboloid into the form
$$
y^\top Dy=c_y\;,
$$
where $D$ is a diagonal matrix with $\pm1$ on the diagonal and $y$ is a suitably linearly transformed version of $x$. Write $y=u+v$, where $u$ is in the $+1$ eigenspace and $v$ is in the $-1$ eigenspace, so $y^\top Dy=u^2-v^2$. Generate a normally distributed radius $r$ and require $y^2=u^2+v^2=r^2$. Now $u^2-v^2$ and $u^2+v^2$ are fixed, so you can solve for $u^2$ and $v^2$, generate random vectors on the unit spheres in the two eigenspaces, scale them by $|u|$ and $|v|$, respectively, add them and transform the result back to $x$.
