2013-08-15 1 views
0

Как создать случайное число в пределах диапазона? Я пробовал следующий код, но это не выполнило мою задачу.Как создать случайные числа от 4 до 10

int fromNumber = 10; 
int toNumber = 30; 
int randomNumber = (arc4random()%(toNumber-fromNumber))+fromNumber; 
+1

Что он сделал? Что вам не понравилось в результате? –

+2

Что заставило вас использовать 10 и 30, когда вам нужно число от 4 до 10? – WendiKidd

+0

SORRY Я только что совершил ошибку во время публикации, но в программе это 4 и 10 ... – user1275440

ответ

4

Существует семь номеров от 4 до 10 включительно. arc4random_uniform() рекомендуется для arc4random() для этой цели.

int randomNumber = arc4random_uniform(7) + 4 

Более общий случай arc4random_uniform(upper_bound - lower_bound + 1) + lower_bound.

+0

вы избили меня на * секунды * = p – justin

+0

может любой орган предоставить мне полезный учебник для того, чтобы остричь arc4random и arc4random_uniform – user1275440

+1

@ user1275440 вам следует искать в Интернете, это просто функция! – moonwave99

1

Update
Я не знал arc4random_uniform(), прежде чем это я рекомендую https://stackoverflow.com/a/18262992/2611613 как ответ. Ответ, приведенный ниже, по-прежнему имеет хорошее объяснение общего подхода к этой проблеме, не беспокоясь о языках.


Ваш ответ должен работать. Не зная, что случилось с тем, что у вас есть, я могу только догадываться о проблеме.

В настоящее время у вас есть

int randomNumber = (arc4random() % (toNumber - fromNumber)) + fromNumber; 

Это производит диапазон [от-до) эксклюзивные, где вы никогда не получите значение ToNumber. Если вы хотите, чтобы ваше случайное число будет в состоянии получить включают ToNumber

int randomNumber = (arc4random() % (toNumber - fromNumber + 1)) + fromNumber; 

С этим вы получите диапазон [от-до] включительно.

Вы можете посмотреть на https://stackoverflow.com/a/363732/2611613 за очень хорошее объяснение того, как это работает.