First focus on which one is correct. $cosine = sqrt(1 - $sine**2) will only give you non-negative $cosine values, so that solution will only cover 2 of four possible quandrants.
in reply to computational efficiency
In cases involving random numbers, it helps to know the theory of how probability density functions are transformed; if you don't want to learn the theory, at least create a few hundred or thousand random points with each method you consider, and plot them in some way -- either in a histogram, or in a density plot or so. That way you have a chance to see if the resulting distribution is what you want.
MJD #11963, It's easy to get the *wrong* answer in O(1) time.