Каков наилучший способ генерации случайных чисел с помощью Objective C на iPhone?
Если я использую (int)((double) rand()/((double)(RAND_MAX) + (double) 1) * 5.0)
для генерации числа от 0 до 4, каждый раз, когда я запускаю программу на iPhone, он генерирует одинаковые номера, чтобы начать с.Как создать случайные числа на iPhone?
ответ
Существует очень похожий вопрос here on StackOverFlow. Вот один из лучших решений (не требуется для затравки):
int r = arc4random() % 5;
Вызов srand()
в начале вашей программы, она будет производить переустановку генератора случайных чисел
Вы должны инициализировать генератор случайных чисел с текущим временем.
srand(time(0));
Насколько вам это необходимо? Если вы хотите достаточно произвольно для криптографии, используйте SecRandomCopyBytes().
я использую
#define RANDOM_SEED() srandom(time(NULL))
#define RANDOM_INT(__MIN__, __MAX__) ((__MIN__) + random() % ((__MAX__+1) - (__MIN__)))
так что вы можете дать минимальное и максимальное
Простая функция для генерации случайных чисел:
int r = arc4random() % 42; // generate number up to 42 (limit)
Несмотря на то, что в качестве ответа я лишний, мне нравится, как число 42 используется вместо 5 здесь. – Toastor
Как я хочу генерировать случайное число до 41, поэтому я дал 42, поэтому он будет генерировать от 0 до 41, включая 0 и 41, так как я хочу использовать 41. –
Достаточно справедливо. Тем не менее, вам настоятельно рекомендуется прочитать «Руководство автостопом по галактике» - я считаю, что это не факультативное чтение для программистов в целом. – Toastor
5 если они хотят от 0 до 4 – user102008
arc4random_uniform - лучший выбор, чем% 5 –
@Catfish_Man Почему? – Thecafremo