2012-04-18 3 views
0

Я видел много q & a о том, как генерировать случайные строки. Но как насчет того случая, когда у меня есть массив строк (возможно, тысячи), и я хочу захватить случайную строку, чтобы каждый пользователь представлял другую? Заранее спасибо.Найти случайную строку в NSMutableString

wordsArray= [[NSMutableArray alloc] init]; 

ответ

4

Вы можете попробовать:

[wordsArray objectAtIndex:arc4random_uniform([wordsArray count])]; 

при условии, что массив не пуст.

Обновлено:arc4random_uniform() для лучшей стабильности. (Спасибо, Ричард)

+0

Вместо этого используйте 'arc4random_uniform()', поскольку он более стабилен, чем метод модуля. –

+0

@ RichardJ.RossIII Спасибо, Ричард. Что делает его более стабильным? – sooper

+0

'arc4random_uniform() возвращает равномерно распределенное случайное число меньше, чем upper_bound. arc4random_uniform() рекомендуется по сравнению с conтаких конструкций, как 'arc4random()% upper_bound', поскольку он избегает «смещения по модулю» , когда верхняя граница не равна двум. 'со страницы man для [arc4random() _uniform] (http://www.unix.com/man-page/freebsd/3/arc4random_uniform/) –