C++11, 221214 bytes
#include<random>
#include<iostream>
#include<cmath>
int main(){using namespace std;int n;cin>>n;random_device r;uniform_real_distribution<> d;for(;n;--n){float x=2*M_PI*d(r),y=M_PI_2*acosy=acos(d(r));cout<<x+y<<' '<<x-y<<';';}}
So this is a straight out implementation of the right algorithm from the wikipedia page. The main problem here in golfing is the oh-so-freaking-long names that the random generator classes have. But, in contrast to good ol' rand, it is at least properly uniform.
Explanation:
#include<random>
#include<iostream>
#include<cmath>
int main()
{
using namespace std;
int n;
cin>>n; // Input number
random_device r; // Get a random number generator
uniform_real_distribution<> d; // Get a uniform distribution of
// floats between 0 and 1
for(;n;--n)
{
float x = 2*M_PI*d(r), // x: Chosen radius angle
y = M_PI_2*acosacos(d(r)); // y: Take the distance from the center and
// apply it an inverse cosine, to get the rotation
cout<<x+y<<' '<<x-y<<';'; // Print the two numbers: they are the rotation
// of the radius +/- the rotation extracted from
// the distance to the center
}
}