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

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

1 Ответ

9 голосов
/ 08 января 2012

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

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

Из статьи по теме:

Полярная форма коробкиПреобразование Мюллера является более быстрым и более надежным в численном отношении.Алгоритмическое описание этого: 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...