Как разделить поток значений в процентном соотношении? Добрый вечер!
Суть вопроса:
есть постоянно поступающие значения, нужно их записывать в процентном соотношении в 3 массива. Проценты можно менять.
Например:
50% - 20% - 30%
соответственно идет половина от всех в первый массив, 1/5 в второй массив и 30% в третий массив.
Сложность в том что нам неведомо окончательное количество значений и нужно как то на ходу распределять.

21 Авг 2019 в 06:08
129 +1
1
Ответы
1

Для разделения потока значений в процентном соотношении на 3 массива вам потребуется следующий подход:

Создайте три переменные, каждая из которых будет хранить текущее количество значений в соответствующем массиве.Приняв значение, определите, какую часть от общего количества значений это составляет.Поделите это значение на процентное соотношение между вашими тремя массивами. Например, для соотношения 50% - 20% - 30%, это будет 0.5, 0.2, 0.3 соответственно.Прибавьте полученные значения к текущему количеству значений в каждом массиве.Повторяйте эти шаги для каждого нового значения.

Пример на Python:

import random
arr1 = []
arr2 = []
arr3 = []
count1 = 0
count2 = 0
count3 = 0
percentages = [0.5, 0.2, 0.3]
while True:
new_value = random.randint(1, 100) # Пример нового значения
total_count = count1 + count2 + count3
value_percentage = new_value / total_count if total_count else 1
count1 += value_percentage * percentages[0]
count2 += value_percentage * percentages[1]
count3 += value_percentage * percentages[2]
if count1 >= 1 and count2 >= 1 and count3 >= 1:
arr1.append(int(count1))
arr2.append(int(count2))
arr3.append(int(count3))
count1 -= int(count1)
count2 -= int(count2)
count3 -= int(count3)
if len(arr1) == 10: # Пример остановки после 10 значений
break
print(arr1)
print(arr2)
print(arr3)

Этот код будет записывать новые значения в массивы arr1, arr2, arr3 в соответствии с заданным процентным соотношением. Учитывайте, что при недостаточном количестве значений на заполнение всех трех массивов, значения могут распределяться неравномерно.

20 Апр в 13:23
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир