Онлайн алгоритм для расчета стандартного отклонения
Обычно у меня есть более техническая проблема, но я упросту ее для вас на примере подсчета шаров.
Предположим, у меня есть шарики разных цветов и один индекс массива (инициализированный для всех 0), зарезервированный для каждого цвета. Каждый раз, когда я выбираю мяч, я увеличиваю соответствующий индекс на 1.
Шары выбираются случайным образом, и я могу выбрать только один мяч за раз. Моя единственная цель - подсчитать количество шариков для каждого цвета, пока у меня не закончатся шарики.
Я хотел бы рассчитать стандартное отклонение количества шаров разных цветов,while I am counting them, Я не хочу вычислять это, повторяя массив еще раз после того, как я закончу с подсчетом всех шаров.
Для визуализации:
Шарики в случайном порядке:BBGRRYYBBGGGGGGB
(каждая буква представляет первую букву цвета)
Индексы массива от 0 до 3 соответствуют цветам B, G, R и Y соответственно.
Когда я закончу собирать шары, мой массив выглядит так[5,7,2,2]
.
После получения окончательного массива вычислить стандартное отклонение очень просто, но я хочу сделать это, пока заполняю этот массив.
Я хочу сделать это на Java, и у меня есть около 1000 цветов.
Каков наиболее эффективный способ реализовать это? Или есть ли способ сделать это до того, как у вас в руках будет последний массив?