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

256
Visualizações
Repetir un bucle varias veces

// ¿Cuál es el número mínimo de veces que tienes que lanzar una moneda antes de que puedas tener tres lanzamientos consecutivos que den el mismo resultado (los tres son cara o los tres son cruz)? ¿Cuál es el número máximo de vueltas que se pueden necesitar? ¿Cuántas volteretas se necesitan en promedio? En este ejercicio exploraremos estas preguntas creando un programa que simule varias series de lanzamientos de monedas.

// Cree un programa que use un generador de números aleatorios para simular lanzar una moneda varias veces. La moneda simulada debe ser justa, lo que significa que la probabilidad de cara es igual a la probabilidad de cruz. Su programa debe lanzar monedas simuladas hasta que ocurran 3 caras consecutivas o 3 cruces consecutivos. Muestre una H cada vez que el resultado sea cara y una T cada vez que el resultado sea cruz, con todos los resultados de una simulación en la misma línea. Luego muestra el número de lanzamientos que se necesitaron para alcanzar 3 ocurrencias consecutivas del mismo resultado. Cuando se ejecuta su programa, debe realizar la simulación 10 veces e informar el número promedio de vueltas necesarias. La salida de muestra se muestra a continuación:

 const headsOrTails = []; const flipcounts = []; let threeInARow = false; while (threeInARow == false) { const coinFlip = Math.floor(Math.random() * 10 + 1); if (coinFlip <= 5) { headsOrTails.push('H'); } else { headsOrTails.push('T'); } for (let index = 0; index < headsOrTails.length; index++) { const element = headsOrTails[index]; if (element == headsOrTails[index + 1]) { if (element == headsOrTails[index + 2]) { threeInARow = true; console.log('il numero di flip ottenuti è ' + headsOrTails.length); } } } }

¿Hay alguna forma de repetir el bucle while varias veces? por ejemplo 10 veces

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

0

flips = []; for (let i = 0; i < 10; i++) { let threeInARow = false; let results = ""; while (threeInARow == false) { const coinFlip = Math.random(); results += coinFlip < 0.5 ? "H" : "T"; if (results.includes("HHH") || results.includes("TTT")) { threeInARow = true; console.log(results); flips.push(results.length); } } } console.log(flips); const average = arr => arr.reduce((a, b) => a + b, 0) / arr.length; console.log("Average:", average(flips))
about 4 years ago · Juan Pablo Isaza Relatório

0

  1. Reemplace el while...loop con un for...loop
  2. Use break para salir del ciclo antes si su variable booleana está configurada como verdadera.

Vea abajo:

 const headsOrTails = []; const flipcounts = []; let threeInARow = false; for(let i=0; i<10; i++) { const coinFlip = Math.floor(Math.random() * 10 + 1); if (coinFlip <= 5) { headsOrTails.push('H'); } else { headsOrTails.push('T'); } for (let index = 0; index < headsOrTails.length; index++) { const element = headsOrTails[index]; if (element == headsOrTails[index + 1]) { if (element == headsOrTails[index + 2]) { console.log('the number of flips obtained is ' + headsOrTails.length); threeInARow = true; } } } if(threeInARow) break; } if(!threeInARow) { console.log("No matches were found"); }

about 4 years ago · Juan Pablo Isaza Relatório

0

Puede realizar un seguimiento de cuántas caras o cruces consecutivas ha habido en los n anteriores utilizando un par de variables y una ventana deslizante:

 const flipCoin = () => Math.random() < 0.5 ? "H" : "T"; const flipCoinUntilNConsecutive = n => { const flips = [], slidingWindow = []; let windowHeadsCount = 0, windowTailsCount = 0; while (true) { const newestFlip = flipCoin(); flips.push(newestFlip); slidingWindow.push(newestFlip); newestFlip == "H" ? windowHeadsCount++ : windowTailsCount++; if (slidingWindow.length == n) { // array.length is O(1). if (windowHeadsCount == n || windowTailsCount == n) { console.log(...flips); return flips.length; } const oldestFlip = slidingWindow.shift(); oldestFlip == "H" ? windowHeadsCount-- : windowTailsCount--; } } }; const n = 3, repeats = 10; console.log(`${repeats} simulations of flipping a coin until ${n} consecutive:`); console.log(); let minFlipsRequired = Number.MAX_VALUE, maxFlipsRequired = 0, totalFlipsRequired = 0; for (let s = 1; s <= repeats; s++) { const flipsRequired = flipCoinUntilNConsecutive(n); console.log(`Simulation ${s}: ${flipsRequired}`); minFlipsRequired = Math.min(minFlipsRequired, flipsRequired); maxFlipsRequired = Math.max(maxFlipsRequired, flipsRequired); totalFlipsRequired += flipsRequired; } console.log(); console.log(`minFlipsRequired: ${minFlipsRequired}`); console.log(`maxFlipsRequired: ${maxFlipsRequired}`); console.log(`totalFlipsRequired: ${totalFlipsRequired}`); const averageFlipsRequired = totalFlipsRequired / repeats; console.log(`averageFlipsRequired: ${averageFlipsRequired}`);

Salida de ejemplo:

 10 simulations of flipping a coin until 3 consecutive: HTHTTT Simulation 1: 6 TTHHH Simulation 2: 5 HHH Simulation 3: 3 HHH Simulation 4: 3 HTHHH Simulation 5: 5 THHTTHHH Simulation 6: 8 HTHTHHH Simulation 7: 7 HTTT Simulation 8: 4 THTTT Simulation 9: 5 HHH Simulation 10: 3 minFlipsRequired: 3 maxFlipsRequired: 8 totalFlipsRequired: 49 averageFlipsRequired: 4.9
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