Как разделить поток значений в процентном соотношении? Добрый вечер! Суть вопроса: есть постоянно поступающие значения, нужно их записывать в процентном соотношении в 3 массива. Проценты можно менять. Например: 50% - 20% - 30% соответственно идет половина от всех в первый массив, 1/5 в второй массив и 30% в третий массив. Сложность в том что нам неведомо окончательное количество значений и нужно как то на ходу распределять.
Для разделения потока значений в процентном соотношении на 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 в соответствии с заданным процентным соотношением. Учитывайте, что при недостаточном количестве значений на заполнение всех трех массивов, значения могут распределяться неравномерно.
Для разделения потока значений в процентном соотношении на 3 массива вам потребуется следующий подход:
Создайте три переменные, каждая из которых будет хранить текущее количество значений в соответствующем массиве.Приняв значение, определите, какую часть от общего количества значений это составляет.Поделите это значение на процентное соотношение между вашими тремя массивами. Например, для соотношения 50% - 20% - 30%, это будет 0.5, 0.2, 0.3 соответственно.Прибавьте полученные значения к текущему количеству значений в каждом массиве.Повторяйте эти шаги для каждого нового значения.Пример на Python:
import randomarr1 = []
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 в соответствии с заданным процентным соотношением. Учитывайте, что при недостаточном количестве значений на заполнение всех трех массивов, значения могут распределяться неравномерно.