arc4random инициализация

Я использую генерацию случайных чисел как часть процедуры минимизации функции (с использованием симплексного алгоритма Нелдера-Мида) в target-c (для iOS). Я использовал arc4random(), потому что его рекомендуют везде на том основании, что а) его не нужно заполнять и б) он дает более качественные случайные числа, чем альтернативы, такие как rand() and random(). Я генерирую двойники между 0 и 1, используя

#define ARC4RANDOM_MAX      0x100000000
-(double) Rnd{
return (double)arc4random() / (double)ARC4RANDOM_MAX ; }

Однако для проверки процедуры мне нужно генерировать повторяющиеся последовательности случайных чисел, и я не могу найти никаких ссылок на способ инициализации arc4random() для этого. Это тот случай, когда arc4random() нельзя инициализировать для получения повторяемой последовательности? Если да, то как можно реализовать автоматизированный модульный тест, если каждый тест будет давать разные ответы? Нужно ли использовать случайные числа более низкого качества из random()? Спасибо за вашу помощь.


person Rob Bullen    schedule 11.01.2013    source источник


Ответы (1)


Функция arc4random получает случайные числа из пула, над которым она не имеет никакого контроля. В нем нет механизма обеспечения повторяемости. Для модульных тестов вам придется использовать что-то еще.

person David Schwartz    schedule 11.01.2013
comment
Спасибо за это, Дэвид. Я так и подозревал, но хотел подтверждения. - person Rob Bullen; 11.01.2013