Generando un doble gaussiano al azar en Objective-C / C

Estoy intentando generar un doble gaussiano aleatorio en Objective-C (igual que random.nextGaussian en Java). Sin embargo, rand_gauss() no parece funcionar. Alguien sabe una forma de lograr esto?

Este enlace muestra cómo calcularlo utilizando la función random() estándar.

Debo tener en cuenta que es probable que tenga que realizar la rutina ranf() que convierte la salida de random() de [0,MAX_INT] a [0,1] , pero eso no debería ser demasiado difícil.

Del artículo enlazado:

La forma polar de la transformación de Box-Muller es tanto más rápida como más robusta numéricamente. Su descripción algorítmica es: float x1, x2, w, y1, y2;

  do { x1 = 2.0 * ranf() - 1.0; x2 = 2.0 * ranf() - 1.0; w = x1 * x1 + x2 * x2; } while ( w >= 1.0 ); w = sqrt( (-2.0 * ln( w ) ) / w ); y1 = x1 * w; y2 = x2 * w;