Генерация случайных чисел в Objective-C - PullRequest
728 голосов
/ 02 октября 2008

Я в основном глава Java, и мне нужен способ генерировать псевдослучайное число от 0 до 74. В Java я использовал бы метод:

Random.nextInt(74)

Меня не интересует обсуждение семян или истинной случайности, просто как вы выполняете ту же задачу в Objective-C. Я искал Google, и, похоже, есть много разной и противоречивой информации.

Ответы [ 13 ]

2 голосов
/ 29 сентября 2015

// В следующем примере будет сгенерировано число от 0 до 73.

int value;
value = (arc4random() % 74);
NSLog(@"random number: %i ", value);

//In order to generate 1 to 73, do the following:
int value1;
value1 = (arc4random() % 73) + 1;
NSLog(@"random number step 2: %i ", value1);

Выход:

  • случайное число: 72

  • случайное число шаг 2: 52

2 голосов
/ 24 февраля 2015

Генерация случайного числа от 0 до 99:

int x = arc4random()%100;

Генерация случайного числа от 500 до 1000:

int x = (arc4random()%501) + 500;
0 голосов
/ 15 июля 2016

Для разработчиков игр используйте random () для генерации случайных событий. Вероятно, по крайней мере в 5 раз быстрее, чем использование arc4random (). Смещение по модулю не является проблемой, особенно для игр, при генерации случайных событий с использованием всего диапазона random (). Обязательно посеять первым. Вызовите srandomdev () в AppDelegate. Вот некоторые вспомогательные функции:

static inline int random_range(int low, int high){ return (random()%(high-low+1))+low;}
static inline CGFloat frandom(){ return (CGFloat)random()/UINT32_C(0x7FFFFFFF);}
static inline CGFloat frandom_range(CGFloat low, CGFloat high){ return (high-low)*frandom()+low;}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...