the result vector will always be normalized because you multiply (0,0,1) with an orientation.

Thinking through the process and the link text again, taking a rand() and normalizing it should not actually yield different results.
The text assumed the coordinate output was in spherical coordinates, which invalidates the problem in the first place