Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

156
Visualizações
Elegir un elemento aleatorio de una matriz con pesos

Actualmente estoy tratando de crear un selector de índice ponderado aleatorio.

Mi objetivo es elegir aleatoriamente un elemento de una matriz. Sin embargo, no es tan simple como hacer esto. Ciertos elementos tienen una boosted probabilidad de ganar. Esto puede ser visto como una especie de lottery

La estructura de datos es la siguiente:

 const users = [ {userId: 1, multiplier: 0}, {userId: 2, multiplier: 25} {userId: 3, multiplier: 0} {userId: 4, multiplier: 25} {userId: 5, multiplier: 15} {userId: 6, multiplier: 30} {userId: 7, multiplier: 35} {userId: 8, multiplier: 2} {userId: 8, multiplier: 7} ]

Cada elemento de la matriz cuenta como una entrada. Sin embargo, los multiplicadores permiten que el usuario tenga mayores posibilidades de ganar.

Una solución que se me ocurrió fue ver los multipliers como una number of tickets , de modo que si un usuario tuviera un multiplicador de 25, tendría 25 boletos.

Sin embargo, esto es muy ineficiente porque cuando hay decenas de miles de entradas con muchos multiplicadores, el tamaño de la matriz crece a un ritmo increíble.

No estoy seguro de cómo puedo hacer esto más eficiente.

Mi solución se puede ver aquí:

 const users = [ {userId: 1, multiplier: 0}, {userId: 2, multiplier: 25} {userId: 3, multiplier: 0} {userId: 4, multiplier: 25} {userId: 5, multiplier: 15} {userId: 6, multiplier: 30} {userId: 7, multiplier: 35} {userId: 8, multiplier: 2} {userId: 8, multiplier: 7} ] const potentialWinners = [] users.map((user) => { for(let i=0; i < user.multiplier; i++) { potentialWinners.push(user.userId) } })

Otras soluciones que he visto parecían bastante complicadas y no soy bueno en matemáticas, por lo que me costó entender lo que estaba sucediendo.

También parecen funcionar en función de los porcentajes, y el mío no. No estoy del todo seguro de cómo puedo modificar el sistema multiplicador para tener en cuenta una probabilidad multiplicada de ganar.

about 4 years ago · Juan Pablo Isaza
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda