Вам не нужна тригонометрия, если вы можете генерировать случайные гауссовские переменные, вы можете сделать (псевдокод)
x <- gauss()
y <- gauss()
z <- gauss()
norm <- sqrt(x^2 + y^2 + z^2)
result = (x / norm, y / norm, z / norm)
Или нарисовать точки внутри куба, пока одна из них не окажется внутри шара, а затемнормализовать:
double x, y, z;
do
{
x = rand(-1, 1);
y = rand(-1, 1);
z = rand(-1, 1);
} while (x * x + y * y + z * z > 1);
double norm = sqrt(x * x + y * y + z * z);
x / norm; y /= norm; z /= norm;