Генерация случайного гауссовского двойника в Objective-C / C

Я пытаюсь создать случайный гауссовский double в Objective-C (такой же, как random.nextGaussian в Java). Однако rand_gauss() не работает. Кто-нибудь знает способ достижения этого?

Эта ссылка показывает, как вычислить ее, используя стандартную функцию random() .

Я должен заметить, что вам, скорее всего, придется выполнить процедуру ranf() которая преобразует вывод random() из [0,MAX_INT] из [0,1] , но это не должно быть слишком сложно.

Из связанной статьи:

Полярная форма преобразования Box-Muller быстрее и надежнее. Алгоритмическое описание этого алгоритма: 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;