У меня есть два текстовых поля, и пользователь может ввести 2 положительных целых числа (используя Objective-C). Цель состоит в том, чтобы вернуть случайное значение между двумя числами.Генерировать случайные числа между двумя числами в Objective-C
Я использовал «man arc4random» и по-прежнему не могу полностью обвести вокруг себя голову. Я придумал какой-то код, но он глючит.
float lowerBound = lowerBoundNumber.text.floatValue;
float upperBound = upperBoundNumber.text.floatValue;
float rndValue;
//if lower bound is lowerbound < higherbound else switch the two around before randomizing.
if(lowerBound < upperBound)
{
rndValue = (((float)arc4random()/0x100000000)*((upperBound-lowerBound)+lowerBound));
}
else
{
rndValue = (((float)arc4random()/0x100000000)*((lowerBound-upperBound)+upperBound));
}
Прямо сейчас, если я вставляю значения 0 и 3, кажется, что все работает нормально. Однако, если я использую числа 10 и 15, я все равно могу получить значения как 1.0000000 или 2.000000 для «rndValue».
Нужно ли мне разработать свой алгоритм или мне нужно изменить способ использования arc4random?
http://iphonedevelopment.blogspot.com/2008/10/random-thoughts-rand-vs-arc4random.html – Andrew
Ваши круглые скобки ошибочны. Удалите открытую скобку после '*' и закрывающей круглой скобки перед ';'. Тем не менее, у вас все еще есть проблемы с округлением. –
Общая формула 'minValue + ((maxValue - minValue) * rnd())' где 'rnd()' возвращает случайное значение с плавающей запятой между 0.0 и 1.0, вернет значение, которое вы ищете. Я оставляю это для вас, чтобы преобразовать это в Obj-C и оптимизировать его в соответствии с вашими потребностями. –