Мне нужно сгенерировать случайные пары чисел (плавающие) в определенном диапазоне. В основном это точки для пар [широта, долгота] (долгота - координаты широты)
. Я думал, что это будет очень прямолинейно с
<?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 простым очень-очень-очень быстро вращающимся счетчиком?
как ИСКЛЮЧИТЬ диапазон из этого сгенерированного диапазона ?? (или на самом деле и массив диапазонов)
Я знаю, что вопросов много, но любая помощь/мысль будет здорово! (и если на первый ответ будет положительным, остальные можно будет почти игнорировать :-)