Objective-C Случайные числа - PullRequest
       11

Objective-C Случайные числа

3 голосов
/ 14 февраля 2011

Я делаю простую игру в понг.Чтобы заставить мяч двигаться в начале нового раунда, я использую

ballVelocity = CGPointMake(4 - arc4random() % 8,4 - arc4random() % 8);

Однако важная часть заключается в следующем:

4 - arc4random() % 8

Однако есть несколько проблемс этим: во-первых, это действительно не генерирует случайное число.Только после того, как я выйду из симулятора, а затем снова откройте его, генерируются новые номера.Во-вторых, я хочу, чтобы он генерировал только числа от -4 до -2 или от 2 до 4.

Ответы [ 3 ]

9 голосов
/ 14 февраля 2011

arc4random () является предпочтительной случайной функцией на iphone, а не rand (). arc4random () не нуждается в заполнении.

Этот код сгенерирует интересующие вас диапазоны:

int minus2_to_minus4 = (arc4random() % 3) - 4;
int two_to_four = (arc4random() % 3) + 2;
3 голосов
/ 14 февраля 2011

Вам нужно взглянуть на функцию rand().По сути, вы «заполняете» его начальным значением, и оно возвращает новое случайное число каждый раз, когда вы его вызываете.

Или посмотрите на этот вопрос , в котором приведен полный пример с использованием arc4random.

0 голосов
/ 04 марта 2012

Это даст вам число с плавающей запятой число от -4 до -2 ИЛИ 2 и 4

float low_bound = -4; //OR 2      
float high_bound = -2;//OR 4
float rndValue = (((float)arc4random()/0x100000000)*(high_bound-low_bound)+low_bound);

Если вы хотите число в -4… -2 И 2… 4, попробуйте это:

float low_bound = 2;      
float high_bound = 4;
float rndValueTemp = (((float)arc4random()/0x100000000)*(high_bound-low_bound)+low_bound);
float rndValue = ((float)arc4random()/0x100000000)<0.5?-rndValueTemp:rndValueTemp;
...