2009-02-04 2 views
22

Каков наилучший способ генерации случайных чисел с помощью Objective C на iPhone?
Если я использую (int)((double) rand()/((double)(RAND_MAX) + (double) 1) * 5.0) для генерации числа от 0 до 4, каждый раз, когда я запускаю программу на iPhone, он генерирует одинаковые номера, чтобы начать с.Как создать случайные числа на iPhone?

ответ

71

Существует очень похожий вопрос here on StackOverFlow. Вот один из лучших решений (не требуется для затравки):

int r = arc4random() % 5; 
+11

5 если они хотят от 0 до 4 – user102008

+4

arc4random_uniform - лучший выбор, чем% 5 –

+0

@Catfish_Man Почему? – Thecafremo

3

Вызов srand() в начале вашей программы, она будет производить переустановку генератора случайных чисел

10

Вы должны инициализировать генератор случайных чисел с текущим временем.

srand(time(0)); 
6

Насколько вам это необходимо? Если вы хотите достаточно произвольно для криптографии, используйте SecRandomCopyBytes().

15

я использую

#define RANDOM_SEED() srandom(time(NULL)) 
#define RANDOM_INT(__MIN__, __MAX__) ((__MIN__) + random() % ((__MAX__+1) - (__MIN__))) 

так что вы можете дать минимальное и максимальное

2

Простая функция для генерации случайных чисел:

int r = arc4random() % 42; // generate number up to 42 (limit) 
+0

Несмотря на то, что в качестве ответа я лишний, мне нравится, как число 42 используется вместо 5 здесь. – Toastor

+0

Как я хочу генерировать случайное число до 41, поэтому я дал 42, поэтому он будет генерировать от 0 до 41, включая 0 и 41, так как я хочу использовать 41. –

+0

Достаточно справедливо. Тем не менее, вам настоятельно рекомендуется прочитать «Руководство автостопом по галактике» - я считаю, что это не факультативное чтение для программистов в целом. – Toastor

 Смежные вопросы

  • Нет связанных вопросов^_^