PHP - разбить число на N случайных чисел

Пятница, 07 Январь 2011

 

Язык программирования PHP содержит достаточно удобных и полезных функций, которые облегчают жизнь программисту, освобождая его от написания "новых велосипедов", однако бывают моменты когда задумываешься - ниужели перед разработчиками PHP ни разу не возникала эта задача...

 

Ну дискутировать особо не о чем (может в другой раз или в комментариях ;)), опишу лишь саму эту задачу, которую решить стандартной функцией PHP не удалось - по причине ее отсутствия.

 

И так задача - имеется целое число, например 5894, которое нужно разбить на определенное количество частей, например 5, значения же этих частей, должны быть случайными, а их сумма равнятся исходному числу (которое разбиваем на части).

 

А вот и решение, небольшая функция выполняющая математические операции, и возвращающая массив рандомных частей, целого числа.

 

 
function expRand($num, $parts){
  $array = array();
  for ($i = 1; $i <= $parts; $i++) {
    if ($i != $parts) {
      $limit = $num * 0.8;
      $newRest = mt_rand(0, $limit);
    }else{
      $newRest = $num;
    }   
 
    $rest -= $newRest;
 
    array_push($array, $newRest);
  }
 
  return $array;
}
 
print_r(expRand(5894, 5));
 

 

Вот и все, спасибо Станиславу Сметанину, за предоставленную функцию!

 

PS. И не забудьте подписаться на ленту новостей RSS

Метки:

Комментарии 

 
anonim Среда, 13 Апрель 2011

Скрипт хороший, но работает непрваильно. Переменная $limit = $num * 0.8; никогда не меняется ....

 

 
 
anonim Пятница, 14 Декабрь 2012

Ошибку исправь,
$rest -= $newRest;
замени на
$num -= $newRest;

 

 

Добавить комментарий