Мне нужно генерировать случайные пары чисел (с плавающей точкой) в пределах определенного диапазона.
В основном это точки для пар [Lat, Lng] (долгота - координаты широты)
Я думал, что это будет очень просто с
<?php echo (rand(0,60).'.'.rand(0,99999999999999).' || '); // yes, a string is ok...?>
но это не дало мне контроля над тем, сколько чисел после точки с плавающей точкой (разрешение) - что мне нужно исправить.
Итак, следующий этап был:
<?php echo (rand(0,60*pow(10,6)))/pow(10,6).' || '; //pow(10,$f) where $ is the resolution ?>
и это работает. вроде, как бы, что-то вроде ..
иногда это приводит к результатам как
22.212346 || 33.134 || 36.870757 || //(rare , but does happen)
но эй - координаты от -90 до 90 (долгота) и от -180 до 180 (лан) - как насчет минуса?
echo (rand(0,-180*pow(10,9)))/pow(10,9).' || ';
это должно сделать это ... и объединение всех вместе должно дать мне как-то случайную строку, такую как
23.0239423525 || -135.937419777
так что после всего этого введения - здесь - это Мой вопрос (ы).
Будучи новичком, я что-то упустил? Разве в PHP нет встроенной функции для генерации случайных чисел с отрицательным или положительным диапазоном?
Почему вышеупомянутая функция иногда поворачивает только разрешение 3,4 или 5, если сказано вернуть 6 (я не применял ABS или ROUND) - есть ли автоматическое округление в php? и если есть, то как этого избежать?
Я заметил, что «случайность» не так уж случайна - сгенерированные числа всегда являются более или менее последовательными между диапазонами - близко друг к другу. Является ли PHP random простым, очень-очень-очень быстрым вращающимся счетчиком?
как ИСКЛЮЧИТЬ диапазон из этого сгенерированного диапазона ?? (или собственно и массив диапазонов)
Я знаю, что это много вопросов, но любая помощь / мысль была бы отличной! (и если на первый ответ положительно, остальные можно почти игнорировать :-)