随机大整数在范围JavaScript

Random Big Integer In Range JavaScript

本文关键字:范围 JavaScript 整数 随机      更新时间:2023-09-26

我需要一个介于0和超过1000位小数之间的随机整数。

使用:big-integer (NPM)可以很容易地处理这么大的整数,但是没有随机方法,并且Math.random()不能表达足够的精度来覆盖这个域。

有没有人知道一个聪明的方法在JavaScript中生成一个大范围的伪随机整数?

我认为在Node.JS中最好的解决方案是crypto.randomBytes(size, [callback]);

也许:

var 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

供参考,**是Exponentiation

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)