PHP rand函数生成错误的值

PHP rand函数生成错误的值,php,random,Php,Random,我对php函数rand有一个小问题。数组是数字介于0.1和1之间的数组 $min = $this->array[0]*10; $max = $this->array[1]*10; array_push($this->motor, rand($min, $max), rand($min,$max)); 偶尔rand生成0,其余时间rand函数工作正常。有人知道我做错了什么吗?rand只适用于整数精度。所有浮点输入都转换为整数。根据定义,浮点值并不精确,稍低于1的值将被截断

我对php函数rand有一个小问题。数组是数字介于0.1和1之间的数组

 $min = $this->array[0]*10;
 $max = $this->array[1]*10;
 array_push($this->motor, rand($min, $max), rand($min,$max));
偶尔rand生成0,其余时间rand函数工作正常。有人知道我做错了什么吗?

rand只适用于整数精度。所有浮点输入都转换为整数。根据定义,浮点值并不精确,稍低于1的值将被截断为0。

尝试以下操作:

$randomNumber = (float)rand($min, $max) / (float)$max;

$this->array包含什么?可能的重复项需要除以10个后缀。例如兰特$min*10,$max*10/10@Bruno同样,浮点运算是不精确的。如果您的输入刚好低于0.1,那么将其乘以10仍然会得到一个小于1的值。@decez假设最小值为0.1,最大值为1乘以10将得到最小值1和最大值10,然后除以10将得到所需的结果。@Bruno您必须在这里提供一个可重复的示例。如果输入大于等于1,rand不应返回0。我们现在只是在遵守你的诺言。这是rand的100次迭代,没有返回0。当rand的结果为0时,我们需要查看$this->array返回的内容。