Высокоточные случайные числа на iOS - PullRequest
1 голос
/ 03 января 2012

Я пытался это некоторое время, но до сих пор не повезло.

Какой самый простой способ получить случайное число между двумя очень точными числами на iOS?

Например, я хочу получить случайное число от 41,37783830549337 до 41,377730629131634, как бы мне этого добиться?

Заранее большое спасибо!

Редактировать: я пробовал это:

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);

Но результаты оказались не такими точными, как я надеялся, и в итоге оказались такими:

Min:41.377838, max:41.377731, result:41.377838

1 Ответ

6 голосов
/ 03 января 2012

Вы можете нормализовать вывод rand в любой диапазон, который вы хотите:

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

[ Примечание: Это чистый C, я предполагаю, что он работает аналогично в Obj-C. ]

[ Примечание 2: замените double типом данных по вашему выбору. ]

[ Примечание 3: замените rand на выбранный вами источник случайных чисел. ]

...