[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Разбиение числа на рандомные части
alexqill
Ребят подскажите пожалуйста с таким вот вопросиком.

Допустим у нас есть массив:
$massive = array(
1 => 0,
2 => 0,
3 => 0,
4 => 0,
5 => 0,
6 => 0,
7 => 0,
8 => 0,
9 => 0,
10 => 0,
)


Также у нас есть число, например 100.

Каким образом можно добиться того, чтобы это число разбилось на 10 разных рандомно генерируемых чисел, сумма которых была бы равна ему, и минимум который мог бы получить элемент массива равен 1.

Пример:
$massive = array(
1 => 18,
2 => 6,
3 => 32,
4 => 4,
5 => 8,
6 => 9,
7 => 2,
8 => 1,
9 => 15,
10 => 5,
)
Игорь_Vasinsky
Цитата
Каким образом можно добиться того, чтобы это число разбилось на 10 разных рандомно генерируемых чисел, сумма которых была бы равна ему


Например - таким

$digit = 100;

$path = 10;

$micro = 3;

$min_dig = $digit/$path;

$result = array();

$sum = 0;

for($i=1; $i<($path+1); $i++){
if($i <$path){
$piece = rand(1, $min_dig) + $micro;
$result[$i] = $piece;
$sum = $sum+$piece;
}
else
$result[$path] = $digit - $sum;
}


$digit - нужное число
$path - кол-во частей
$micro - эта цифра может/должна динамически задаваться - завися от $digit
её цель - сделать последний элемент массива - не на много отличающимся от всех остальных

а что дальше надо - я не понял

_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.