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

155
Visualizações
¿Cómo elijo datos aleatorios de una matriz y me aseguro de que se seleccione un mínimo de ciertos datos de esa matriz sin afectar la probabilidad?

Estoy seleccionando al azar 20 bicicletas de una variedad más grande de bicicletas y luego estoy creando una nueva variedad con esas bicicletas seleccionadas. Me gustaría asegurarme de que al menos 2 de las bicicletas seleccionadas al azar en esa nueva matriz sean de color rojo. Más de 2 pueden ser rojos, pero como mínimo 2 deberían serlo. ¿Cómo se logra esto mientras se hace justo para todas las bicicletas seleccionadas al azar?

Algún código de ejemplo:

 const bikes = [ { type: 'bmx', color: 'red' }, { type: 'mountain', color: 'blue' }, { type: 'bmx', color: 'yellow' }, { type: 'mountain', color: 'black' }, { type: 'bmx', color: 'red' }, { type: 'bmx', color: 'purple' } ...more bikes ] const getRandomBikes = () => { const randomBikes = [] //random select 20 bikes for(let i = 0; i < 20; i++) { randomBikes.push(bikes[Math.floor(Math.random() * bikes.length)]) } return randomBikes } getRandomBikes()

Muy simple para devolver una matriz aleatoria. Pero ahora, ¿cómo me aseguraría de que la matriz aleatoria de bicicletas contenga al menos dos bicicletas con color: 'red' sin afectar la probabilidad de que se seleccionen todas las bicicletas? Presumiblemente, estaría ejecutando getRandomBikes() hasta que la matriz devuelta cumpliera con los requisitos, pero digamos que mi matriz de bikes tiene 10000 , eso puede llevar una eternidad antes de que se cumpla el requisito. ¿Cómo me aseguro de que al menos dos bicicletas rojas terminen en la matriz de bicicletas seleccionada al azar?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Mientras itera, puede contar la cantidad de bicicletas requeridas de un color específico restante y, si es igual a la cantidad de elementos que quedan por elegir, elija solo de las bicicletas con el color correcto.

 const bikes = [ { type: 'bmx', color: 'red' }, { type: 'mountain', color: 'blue' }, { type: 'bmx', color: 'yellow' }, { type: 'mountain', color: 'black' }, { type: 'bmx', color: 'red' }, { type: 'bmx', color: 'purple' } ]; const getRandomBikes = (requiredRed, totalPicks) => { const chosenBikes = []; const reds = bikes.filter(({ color }) => color === 'red'); for(let i = 0; i < totalPicks; i++) { const redsSoFar = chosenBikes.reduce((a, b) => a + (b.color === 'red'), 0); const picksRemaining = totalPicks - i; const mustChooseRed = requiredRed - redsSoFar === picksRemaining; chosenBikes.push( mustChooseRed ? reds[Math.floor(Math.random() * reds.length)] : bikes[Math.floor(Math.random() * bikes.length)] ); } return chosenBikes; } console.log(getRandomBikes(2, 3));

O con menos complejidad

 const bikes = [ { type: 'bmx', color: 'red' }, { type: 'mountain', color: 'blue' }, { type: 'bmx', color: 'yellow' }, { type: 'mountain', color: 'black' }, { type: 'bmx', color: 'red' }, { type: 'bmx', color: 'purple' } ]; const getRandomBikes = (requiredRed, totalPicks) => { const chosenBikes = []; const reds = bikes.filter(({ color }) => color === 'red'); let redsSoFar = 0; for(let i = 0; i < totalPicks; i++) { const picksRemaining = totalPicks - i; const mustChooseRed = requiredRed - redsSoFar === picksRemaining; const chosenBike = mustChooseRed ? reds[Math.floor(Math.random() * reds.length)] : bikes[Math.floor(Math.random() * bikes.length)] if (chosenBike.color === 'red') redsSoFar++; chosenBikes.push(chosenBike); } return chosenBikes; } console.log(getRandomBikes(2, 3));

about 4 years ago · Juan Pablo Isaza Relatório
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