Estoy tratando de generar 500 números aleatorios entre 1 y 50 y luego dividirlos en mis 5 rangos y luego imprimir el porcentaje de cada rango en forma de estrellas. He escrito el siguiente código, pero solo genera 1 número en lugar de 500. ¿Alguien puede ayudarme a solucionar este problema? Soy nuevo en javascript y agradecería cualquier ayuda o consejo. Gracias.
let temp = Math.floor((Math.random() * 50) + 1); let bin1 = 0; let bin2 = 0; let bin3 = 0; let bin4 = 0; let bin5 = 0; if(temp >= 1 && temp < 11){ bin1++; document.write(bin1 + " numbers are randomly generated between 01 - 10.<br>"); } else if(temp >= 11 && temp < 21){ bin2++; document.write(bin2 + " numbers are randomly generated between 11 - 20.<br>"); } else if(temp >= 21 && temp < 31){ bin3++; document.write(bin3 + " numbers are randomly generated between 21 - 30.<br>"); } else if(temp >= 31 && temp < 41){ bin4++; document.write(bin4 + " numbers are randomly generated between 31 - 40.<br>"); } else if(temp >= 41 && temp < 51){ bin5++; document.write(bin5 + " numbers are randomly generated between 41 - 50.<br>"); } document.write("Histogram of stars as a percentage of the number of values are displayed below: <br>"); for(let x = 0; x < bin1*100/500; x++){ document.write("01 - 10: "); document.write("*"); } for(let x = 0; x < bin2*100/500; x++){ document.write("11 - 20: "); document.write("*"); } for(let x = 0; x < bin3*100/500; x++){ document.write("21 - 30: "); document.write("*"); } for(let x = 0; x < bin4*100/500; x++){ document.write("31 - 40: "); document.write("*"); } for(let x = 0; x < bin5*100/500; x++){ document.write("41 - 50: "); document.write("*"); }Parece que tienes que envolver en un bucle for.
Tratando de hacer lo que está buscando, vea el siguiente ejemplo:
function generateRandomNumber() { return Math.floor(Math.random() * 50); } const ranges = { "1-11": [], "11-21": [], // instead of array we can have value 0, and increment that incase dont want to track the values in future "21-31": [], "31-41": [], "41-51": [], } function updateRanges(num) { if(num >= 41 && num < 51) ranges["41-51"].push(num); else if(num >= 31 && num < 41) ranges["31-41"].push(num); else if(num >= 21 && num < 31) ranges["21-31"].push(num); else if(num >= 11 && num < 21) ranges["11-21"].push(num); else ranges["1-11"].push(num); } for (let i = 0; i < 500; i++) { const random = generateRandomNumber(); updateRanges(random); } const output = document.getElementById("output"); Object.keys(ranges).forEach(key => { output.innerHTML = output.innerHTML + `<p>numbers are randomly generated between ${key} : ${ranges[key].length}</p>` }) <div id="output"></div>