int main() { vec A = zeros(values*N); vec dAdt = zeros(values*N); vec M = zeros(N); double u, v, w; double x, y, z; double r, theta, phi; long idum = -1; // initial conditions for (int i=0; i<N; i++) { u = ran2(&idum); v = ran2(&idum); w = ran2(&idum); phi = 2*pi*w; r = R0*cbrt(u); theta = acos(1-2*v); x = r*sin(theta)*cos(phi); y = r*sin(theta)*sin(phi); z = r*cos(theta); int j = values*i; A(j) = x; // x - position A(j+1) = y; // y - position A(j+2) = z; // z - position A(j+3) = 0.0; // vx - velocity A(j+4) = 0.0; // vy - velocity A(j+5) = 0.0; // vz - velocity M(i) = sigma*gaussian_deviate(&idum) + mu; } Solver R = Solver(A, dAdt, M); //R.RungeKutta4(); R.LeapFrog(); }