Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите решить алгоритмическую задачу, поделить число на несколько случайных 
:(
    Опции темы
iNfantry
Дата 22.2.2014, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Всем привет, помогите решить такую интересную задачку. В голове сразу зреют какието грандиозные навороченные алгоритмы, но мне кажется есть какое-то простое решение, итак...

Нужно разбить заданное число на несколько случайных чисел, количество таких чисел также задается произвольно.
Пример: разбить числов 50 на 8 СЛУЧАЙНЫХ чисел, тоесть к примеру 50 = 5+4+19+8+2+1+2+9.
Еще хотелось бы дополнительное условие добавить, чтобы куски были не больше каковото числа, например не больше 20, но для начала можно и без этого)

Это сообщение отредактировал(а) iNfantry - 22.2.2014, 01:19
PM MAIL   Вверх
ElGuapo
Дата 22.2.2014, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый
*


Профиль
Группа: Участник
Сообщений: 101
Регистрация: 1.7.2006

Репутация: нет
Всего: 3



C этой темой, думаю, нужно в раздел "Алгоритмы". Собственно про PHP вопроса не вижу.
PM MAIL   Вверх
iNfantry
Дата 22.2.2014, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Почему, мне нужен пример как раз на PHP.
Для элемента случайности вполне сойдет стандартная функция rand().
PM MAIL   Вверх
AVA12
Дата 22.2.2014, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 135
Регистрация: 4.5.2008

Репутация: 0
Всего: 4



Цитата
Почему, мне нужен пример как раз на PHP

Ну, если вопрос именно по PHP, то давай алгоритм решения и рассказывай, что не получается, а мы подскажем, как реализовать.
PM ICQ Jabber   Вверх
capitan
Дата 22.2.2014, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 602
Регистрация: 27.2.2005
Где: Москва

Репутация: 9
Всего: 13



Код

    $num_start = $num = 50;
    $count = 8;
    $list = array();
    
    for($i=0; $i<$count-1; $i++) {
        $rand_num = mt_rand(1, $num-($count-$i));        
        $list[] = $rand_num;
        $num -= $rand_num;                
    }        
    $list[] = $num_start - array_sum($list);
    
    echo "<pre>";
    echo "Сумма: ".array_sum($list)."<br/>";
    echo "Состав: ".join(', ',$list);    
    echo "</pre>";

Логика понятна?
PM MAIL WWW ICQ   Вверх
iNfantry
Дата 22.2.2014, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 17.9.2006

Репутация: нет
Всего: нет



Цитата(capitan @ 22.2.2014,  19:22)
Код

    $num_start = $num = 50;
    $count = 8;
    $list = array();
    
    for($i=0; $i<$count-1; $i++) {
        $rand_num = mt_rand(1, $num-($count-$i));        
        $list[] = $rand_num;
        $num -= $rand_num;                
    }        
    $list[] = $num_start - array_sum($list);
    
    echo "<pre>";
    echo "Сумма: ".array_sum($list)."<br/>";
    echo "Состав: ".join(', ',$list);    
    echo "</pre>";

Логика понятна?

Предельно понятна, большое спасибо! Именно это мне и надо было!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0594 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.