Objective-c – Generate Random Numbers Between Two Numbers in Objective-C


I have two text boxes and user can input 2 positive integers (Using Objective-C). The goal is to return a random value between the two numbers.

I've used "man arc4random" and still can't quite wrap my head around it. I've came up with some code but it's buggy.

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));
    rndValue = (((float)arc4random()/0x100000000)*((lowerBound-upperBound)+upperBound));

Right now if I put in the values 0 and 3 it seems to work just fine. However if I use the numbers 10 and 15 I can still get values as low as 1.0000000 or 2.000000 for "rndValue".

Do I need to elaborate my algorithm or do I need to change the way I use arc4random?

Best Solution

You could simply use integer values like this:

int lowerBound = ...
int upperBound = ...
int rndValue = lowerBound + arc4random() % (upperBound - lowerBound);

Or if you mean you want to include float number between lowerBound and upperBound? If so please refer to this question: https://stackoverflow.com/a/4579457/1265516