Skip to content

Рівномірний розподіл чисел

Постовий: Автомобільний потрал, де читаємо про всі автоновости України.

Відкривається новий новий розділ “алгоритми“.
Сьогодні будемо рівномірно розподіляти числа між елементами.
Наприклад, у нас є 5 елементів і потрібно рівномірно розподіли між ними число 100. Тобто щоб сума всіх елементів була = 100.
Варіанти типу 100/5 – не рулять за визначенням 🙂

Отже, суть алгоритму полягає у двох ітераціях:
Перша, 5 разів вибираємо рандомне число від 0 до 100.
Але поки що їхня сума не рівна 100. Ці числа можуть слугувати частиною суми.
В наступному циклі ми вибираємо частину від загальної суми, округляємо і приводимо до потрібної форми.

А тепер реалізація на PHP

Кілька слів про

Справа в тому, що в другому циклі ми відкидаєм дробову частину від дійсного числа, а тому сума втрачає свою точність.
Ми самі знаходимо різницю $diff і додаєм її до останнього елемента.

Зауваження:
Різниця $diff >= 0 завжди!
Якщо мінімальне значення $min = 0, то запис ($max-$min) + $min можна змінити на $max
Алгоритм працює для розподілу натуральних чисел. А для розподілу цілих або дійсних потрібно трохи змінити алгоритм.

Be First to Comment

    Залишити відповідь

    Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *