#include <math.h>
#include <iostream>
using namespace std;
class Vec3d
{
public:
double x, y, z;
public:
Vec3d() {};
Vec3d(double a, double b, double c) : x(a), y(b), z(c) {}
};
double randf()
{
return ((double)rand()/(double)(RAND_MAX));
}
Vec3d vRand()
{
double theta = 2.0 * M_PI * randf();
double phi = acos(2.0 * randf() - 1.0);
double sinphi = sin(phi);
return Vec3d(cos(theta) * sinphi, sin(theta) * sinphi, cos(phi));
}
int main()
{
Vec3d v = vRand();
printf("x = %f\n", v.x);
printf("y = %f\n", v.y);
printf("z = %f\n", v.z);
return 0;
}
I2luY2x1ZGUgPG1hdGguaD4KI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgVmVjM2QKewpwdWJsaWM6CiAgICBkb3VibGUgeCwgeSwgejsKCnB1YmxpYzoKICAgIFZlYzNkKCkge307CiAgICBWZWMzZChkb3VibGUgYSwgZG91YmxlIGIsIGRvdWJsZSBjKSA6IHgoYSksIHkoYiksIHooYykge30KfTsKCmRvdWJsZSByYW5kZigpCnsKICAgIHJldHVybiAoKGRvdWJsZSlyYW5kKCkvKGRvdWJsZSkoUkFORF9NQVgpKTsKfQoKVmVjM2QgdlJhbmQoKQp7CiAgICBkb3VibGUgdGhldGEgPSAyLjAgKiBNX1BJICogcmFuZGYoKTsKICAgIGRvdWJsZSBwaGkgPSBhY29zKDIuMCAqIHJhbmRmKCkgLSAxLjApOwogICAgZG91YmxlIHNpbnBoaSA9IHNpbihwaGkpOwogICAgcmV0dXJuIFZlYzNkKGNvcyh0aGV0YSkgKiBzaW5waGksIHNpbih0aGV0YSkgKiBzaW5waGksIGNvcyhwaGkpKTsKfQoKaW50IG1haW4oKQp7CgkKCVZlYzNkIHYgPSB2UmFuZCgpOwoKCXByaW50ZigieCA9ICVmXG4iLCB2LngpOwoJcHJpbnRmKCJ5ID0gJWZcbiIsIHYueSk7CglwcmludGYoInogPSAlZlxuIiwgdi56KTsKCQoJcmV0dXJuIDA7Cn0=