Search code examples
iphoneobjective-ciosrandomarc4random

High-precision random numbers on iOS


I have been trying this for a while but thus far haven't had any luck.

What is the easiest way to retrieve a random number between two very precise numbers on iOS?

For example, I want a random number between 41.37783830549337 and 41.377730629131634, how would I accomplish this?

Thank you so much in advance!

Edit: I tried this:

double min = 41.37783830549337;
double max = 41.377730629131634;
double test = ((double)rand() / RAND_MAX) * (max - min) + min;
NSLog(@"Min:%lf, max:%lf, result:%lf",min,max,test);

But the results weren't quite as precise as I was hoping, and ended up like this::

Min:41.377838, max:41.377731, result:41.377838

Solution

  • You can normalise the output of rand to any range you want:

    ((double)rand() / RAND_MAX) * (max - min) + min
    

    [Note: This is pure C, I'm assuming it works equivalently in Obj-C.]

    [Note 2: Replace double with the data-type of your choice as appropriate.]

    [Note 3: Replace rand with the random-number source of your choice as appropriate.]