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 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.