Estoy tratando de ejecutar el siguiente código:
var a = Math.floor(100000 + Math.random() * 900000); a = a.substring(-2); Recibo un error como que undefined is not a function en la línea 2, pero cuando trato de hacer alert(a) , tiene algo. ¿Que esta mal aquí?
Eso es porque a es un número, no una cadena. Lo que probablemente quieras hacer es algo como esto:
var val = Math.floor(1000 + Math.random() * 9000); console.log(val);Math.random() generará un número de punto flotante en el rango [0, 1) (esto no es un error tipográfico, es una notación matemática estándar para mostrar que 1 está excluido del rango).Caso general
Si desea generar un número entero en el rango [x, y), puede usar el siguiente código:
Math.floor(x + (y - x) * Math.random());Esto generará un número aleatorio de 4 dígitos (0000-9999) usando una subcadena:
var seq = (Math.floor(Math.random() * 10000) + 10000).toString().substring(1); console.log(seq);Adapté Balajis para hacerlo inmutable y funcional.
Debido a que esto no usa matemáticas, puede usar alfileres alfanuméricos, emojis, muy largos, etc.
const getRandomPin = (chars, len)=>[...Array(len)].map( (i)=>chars[Math.floor(Math.random()*chars.length)] ).join(''); //use it like this getRandomPin('0123456789',4);