📅  最后修改于: 2023-12-03 15:16:38.807000             🧑  作者: Mango
在编程中,我们经常需要随机生成数字。Javascript提供了一个Math.random()
函数来生成一个0到1之间的随机数字。但是,这个数字只有15位小数,达不到我们需要的89位数字。因此,我们需要使用其他的方式来生成我们需要的数字。
ES2020引入了一个新的类型BigInt
来处理大数。通过BigInt
可以生成任意位数的数字。我们可以使用BigInt()
函数将Math.random()
生成的数字转换为BigInt
类型,再进行位移和位运算,生成我们需要的89位数字。
let num = BigInt(Math.random().toString().slice(2, 17));
for (let i = 0; i < 5; i++) {
num = (num << 15) + BigInt(Math.random().toString().slice(2, 17));
}
let result = num.toString().slice(0, 89);
console.log(result);
上述代码生成了一个89位的随机数字,并将结果输出。
在Math
库中,有一些函数可以生成一个较大的随机数字,例如Math.floor(Math.random() * 10**89)
可以生成一个89位数字。但是,这种方式生成的数字可能会出现前导零,因此我们需要在生成的数字上添加前导零,使得数字达到89位。
let num = Math.floor(Math.random() * 10**89).toString();
let result = "0".repeat(89 - num.length) + num;
console.log(result);
上述代码生成了一个89位的随机数字,并将结果输出。
以上两种方法都可以生成我们需要的89位数字,具体使用哪种方法取决于个人偏好和使用场景。