Ajuda em código de geração ramdômica de votos em candidatos

Então galera , preciso de uma ajuda .
Estou desenvolvendo um código para um trabalho na faculdade e ele tem que gerar 10 mil votos aleatorios , armazenar em um Vetor de 6 posições onde cada posição representará um candidato .
O meu problema principal é o seguinte ;
Consegui criar o random para gerar os 10 mil votos , e criei um vetor candidato que armazena os votos gerados em cada candidato , so que ele tipo gera 9 mil votos em uma posição , depois 8 mil em outra , e isso ultrapassa os 10 mil votos .O que eu preciso , é que ele gere aleatoriamente os votos , armazene em cada cadidato do vetor , porem , a soma dos votos de cada candidato não pode ultrapassar os 10 mil .Ficou claro ?Abaixo o código …

Obrigado !

package mapa1;
import java.util.Random;

public class Mapa1 {

public static void main(String[] args) {
    int vetor[] = new int [10]; //Vetor que ira armazenar os votos nos respectivos candidatos.
    Random gerador = new Random(); //método gerador dos números aleatórios 
               
        for (int i =0;i < 6; i++){
           
            
          vetor [i] = gerador.nextInt(10000);//Momento em que o índice de cada vetor recebe os votos gerados
       
        System.out.printf("Candidato %d : ",i ); //Usa o indice para mostar qual o candidato especifico.
        System.out.println(vetor[i]);//Valor de votos em cada candidato 
    }
    

}
    
    
    
    
}

Ja pensou ir “descontando” do máximo inicial?

int votos = 10000;
for (int i =0;i < 6; i++){
      votos -= gerador.nextInt(votos);
      vetor[i] = votos;
     ...
}

Fazendo um teste de mesa rápido, se ele começou em 10k e gerou um random de 9k, na proxima rodada votos vai valer 1k, depois ele gera um random de no máximo 1k e vai descontando… vc só precisa ficar atento com números negativos, pra ser sincero nem sei se nextInt gera de número negativo mas fica o alerta.

De quebra vc ainda sabe quantos “votos nulos ou brancos” sobraram se algum random não usar tudo :joy: sucesso!

vamos la

se vc tem 10000 votos e precisa distribuir entre 6, isso equivale a vc gerar 10000 numeros aleatorios de 0 a 5

int[] voto = new int[6];
for(int i=0;i < 10000;i++){
  int voto = gerador.nextInt(6);
  vetor[voto]++;
}

vc pode gerar um “conjunto” de votos? pode. mas eu não sei qual sera a distribuição disso. não sera gaussiana com certeza - mas posso estar errado

Cara , será que não teria como limitar o random , para que ele não distribua mais que 10 mil votos entre os 6 candidatos ?

Se vc prestar bem atenção no que postei, vai perceber que estou descontando dos 10k, e a cada rodada desconta do que sobrou para o proximo eleitor, olhe atentamente…