我需要一个介于0和超过1000位的整数之间的随机整数。
使用big-integer (NPM)处理这么大的整数很容易,但没有随机方法,而且Math.random()表达的精度不足以覆盖该范围。
是否有人知道在JavaScript中生成大范围伪随机整数的巧妙方法?
我需要一个介于0和超过1000位的整数之间的随机整数。
使用big-integer (NPM)处理这么大的整数很容易,但没有随机方法,而且Math.random()表达的精度不足以覆盖该范围。
是否有人知道在JavaScript中生成大范围伪随机整数的巧妙方法?
我认为在Node.JS中,你的情况最好的解决方案是使用crypto.randomBytes(size, [callback]);
。
big-integer
似乎使用整数数组作为大型基数表示来表示值,获得良好的分布将是一个比其目的更需要的算法。 - Adrian Seeleyvar crypto = require('crypto');
var biformat = require('biguint-format');
// Adjust # bytes as needed
var seed = biformat(crypto.randomBytes(8), 'dec');
bigInt(seed);
https://www.npmjs.com/package/random-bigint
const random = require('random-bigint')
// synchronous api, generates a random number between 0 and 2**128-1
const num = random(128) // 128 bits
function genRandomNumber(byteCount, radix) {
return BigInt('0x' + crypto.randomBytes(byteCount).toString('hex')).toString(radix)
}
// to genrate a 8 byte number in decimal format string
const randomNumber = genRandomNumber(8, 10)
genRnadomNumber
中犯了一个错误。 - Mike Steelson
randBetween
方法。 - Peter Olson