Php 边界框中的随机点(横向、横向)

Php 边界框中的随机点(横向、横向),php,geolocation,latitude-longitude,Php,Geolocation,Latitude Longitude,我想在边界框中找到带有纬度/经度的随机点 我在下面定义了边界框: [bbox] => Object ( [lat] => Array ( [min] => 51.319503485716 [max] => 56.169129950579 ) [lon] => Array ( [min] => 23.199493849386 [max] => 32.693643019346 ) ) $x_m

我想在边界框中找到带有纬度/经度的随机点

我在下面定义了边界框:

[bbox] => Object (
   [lat] => Array (
     [min] => 51.319503485716
     [max] => 56.169129950579
   )
   [lon] => Array (
     [min] => 23.199493849386
     [max] => 32.693643019346
   )
)
$x_max  = $polygon->bbox['lat']['max'];
$x_min  = $polygon->bbox['lat']['min'];
$y_max  = $polygon->bbox['lon']['max'];
$y_min  = $polygon->bbox['lon']['min'];

$lat    = $y_min + mt_rand($y_min, $y_max);
$lng    = $x_min + mt_rand($x_min, $x_max);
我的功能:

[bbox] => Object (
   [lat] => Array (
     [min] => 51.319503485716
     [max] => 56.169129950579
   )
   [lon] => Array (
     [min] => 23.199493849386
     [max] => 32.693643019346
   )
)
$x_max  = $polygon->bbox['lat']['max'];
$x_min  = $polygon->bbox['lat']['min'];
$y_max  = $polygon->bbox['lon']['max'];
$y_min  = $polygon->bbox['lon']['min'];

$lat    = $y_min + mt_rand($y_min, $y_max);
$lng    = $x_min + mt_rand($x_min, $x_max);
但是上面的函数返回错误的结果


如何修复它?

您需要一个浮点随机数,而
mt_rand
返回一个int。请尝试以下方法:

$lat = $y_min + ($y_max - $y_min) * (mt_rand() / mt_getrandmax());
$lng = $x_min + ($x_max - $x_min) * (mt_rand() / mt_getrandmax());