PHP random — исключение/включение/поплавки/негативы и другие животные

Мне нужно сгенерировать случайные пары чисел (плавающие) в определенном диапазоне. В основном это точки для пар [широта, долгота] (долгота - координаты широты)

. Я думал, что это будет очень прямолинейно с

<?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 простым очень-очень-очень быстро вращающимся счетчиком?

  • как ИСКЛЮЧИТЬ диапазон из этого сгенерированного диапазона ?? (или на самом деле и массив диапазонов)

Я знаю, что вопросов много, но любая помощь/мысль будет здорово! (и если на первый ответ будет положительным, остальные можно будет почти игнорировать :-)

5
задан Obmerk Kronen 10 March 2012 в 12:24
поделиться