2015-09-01 6 views
-1

У меня есть небольшая проблема с функцией php rand. Массив представляет собой массив с числами от 0,1 до 1.Функция PHP rand генерирует неправильные значения

$min = $this->array[0]*10; 
$max = $this->array[1]*10; 
array_push($this->motor, rand($min, $max), rand($min,$max)); 

После того, как в то время как рандов генерирует 0 остальное время функция Rand работает нормально. Кто-нибудь знает, что я делаю неправильно?

+0

что делает $ this-> массив содержит ?? –

+0

Возможный дубликат [Использовать PHP для генерации случайных десятичных чисел в два десятичных разряда] (http://stackoverflow.com/questions/10419501/use-php-to-generate-random-decimal-beteween-two-decimals) –

ответ

2

rand работает только с цельной точностью. Все входы с плавающей точкой преобразуются в целые числа. Плывет по определению не совсем точным, значение чуть меньше 1 будет обрезано до 0.

+0

, но * 10 должен решить эту проблему? – Bruno

+0

вам нужно разделить на 10 слов. например, 'rand ($ min * 10, $ max * 10)/10' – fyrye

+0

@Bruno Опять же, арифметика с плавающей запятой ** неточна **. Если ваш вход немного ниже 0,1, то умножение на 10 будет по-прежнему приводить к значению <1. – deceze

0

Попробуйте это:

$randomNumber = (float)rand($min, $max)/(float)$max; 
Смежные вопросы