me gustaría generar números aleatorios del 1 al 50, luego excluir una matriz como; 4,7,10,20,35, etc.
probé esto;
let mainNum = 50 let exclNum = [4, 7, 10, 20, 35]; if (!exclNum.includes(mainNum)) { console.log(Math.floor(Math.random() * mainNum) + 1) }pero aún genera números que todavía están en la matriz, ¿hay algo que me esté perdiendo?
gracias por tu respuesta de antemano
Primero debe generar el número aleatorio, luego verifique si está en la matriz. Haga esto en un bucle hasta que no esté en la matriz.
let mainNum = 50 let exclNum = [4, 7, 10, 20, 35]; let ranNum; while (true) { ranNum = Math.floor(Math.random() * mainNum) + 1; if (!exclNum.includes(ranNum)) { break; } } console.log(ranNum);Actualmente está comprobando si exclNum incluye mainNum , que es 50.
En su lugar, genere el número aleatorio y verifique si exclNum lo incluye:
let mainNum = 50 let exclNum = [4, 7, 10, 20, 35]; while(!exclNum.includes((randomNum = Math.floor(Math.random() * mainNum) + 1))){ console.log(randomNum) break; } <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>Un ciclo do... while es más conciso
function myRandom(mainNum, exclude) { let r; do { r = Math.floor(Math.random() * mainNum) + 1; } while(exclude.includes(r)) return r; } console.log(myRandom(50, [4, 7, 20, 35])); console.log(myRandom(50, [4, 7, 20, 35])); console.log(myRandom(50, [4, 7, 20, 35])); console.log(myRandom(50, [4, 7, 20, 35])); console.log(myRandom(50, [4, 7, 20, 35]));