Problema de JavaScript Math.random()
Esto se debe a que los números aleatorios generados por JavaScript son números decimales puros (números reales mayores o iguales a 0 y menores que 1), pero el número de decimales después del punto decimal definitivamente no es un número fijo. 16 dígitos Por ejemplo, 0,123 es 3 0,987654321 son 9 decimales. Entonces, la idea de obtener un número de 16 dígitos simplemente obteniendo el número de dígitos después del punto decimal no es una opción.
El método correcto es: primero multiplicar el número aleatorio por 9, luego sumar 1 para obtener un número del 1 al 9.9999..., luego multiplicar por 15 por 10 (es decir, a 1 le sigue 15). ceros), finalmente redondeado para obtener 1000...(1 seguido de 15 ceros, es decir, los 16 dígitos más pequeños) a 9999...(16 9, es decir, los 16 dígitos más grandes), máximo 16 dígitos): función ?random(){
return?parseInt((Math.random() *9+1)*Math.pow(10,15));
p>} p>
El segundo método consiste en combinar 16 enteros aleatorios de un dígito, que también tienen 16 dígitos: function?random(){
for(var?s="",i=0; i<16;i++)s+= parseInt(Math.random()*10);
return?s;
}
La diferencia entre estos dos El método es que el número generado por el primero es de 16 bits puros (0 no se puede usar como comienzo), es de tipo numérico y es más eficiente que el número generado por el segundo permite 0 como comienzo. Pertenece al tipo de cadena; y es relativamente ineficiente.