Algoritmo on-line para calcular o desvio padrão

Normalmente, tenho um problema mais técnico, mas vou simplificá-lo para você com um exemplo de contagem de bolas.

Suponha que eu tenha bolas de cores diferentes e um índice de uma matriz (inicializada para todos os 0s) reservada para cada cor. Toda vez que eu pego uma bola, eu aumento o índice correspondente em 1.

As bolas são escolhidas aleatoriamente e só posso escolher uma bola de cada vez. Meu único objetivo é contar o número de bolas para cada cor, até que eu fique sem bolas.

Eu gostaria de calcular o desvio padrão do número de bolas de cores diferentes,enquanto eu estou contando eles. Eu não quero calcular isso por ter que percorrer o array mais uma vez depois que eu terminar de contar todas as bolas.

Vizualizar:

Bolas em ordem aleatória:BBGRRYYBBGGGGGGB (cada letra representa a primeira letra de uma cor) Os índices de matriz de 0 a 3 correspondem às cores B, G, R e Y, respectivamente. Quando eu termino de pegar as bolas, minha matriz parece[5,7,2,2].

É muito simples calcular o desvio padrão depois de ter o array final, mas quero fazê-lo enquanto preencho este array.

Eu quero fazer isso em Java e tenho aproximadamente 1000 cores.

Qual é a maneira mais eficiente de implementar isso? Ou existe alguma maneira de fazer isso antes de ter o array final em mãos?

questionAnswers(2)

yourAnswerToTheQuestion