gpt4 book ai didi

Node.js - 如何使用 crypto.randomBytes 生成特定范围内的随机数

转载 作者:IT老高 更新时间:2023-10-28 23:22:54 28 4
gpt4 key购买 nike

如何使用 crypto.randomBytes 生成特定范围内的随机数?

我希望能够生成这样的随机数:

console.log(random(55, 956)); // where 55 is minimum and 956 is maximum

我只能在 random 函数中使用 crypto.randomBytes 来生成此范围的随机数。

我知道如何将生成的字节从 randomBytes 转换为十六进制或十进制,但我不知道如何从数学上从随机字节中获取特定范围内的随机数。

最佳答案

要生成一定范围内的随机数,可以使用以下等式

Math.random() * (high - low) + low

但您想使用 crypto.randomBytes 而不是 Math.random()此函数返回一个包含随机生成字节的缓冲区。反过来,您需要将此函数的结果从字节转换为十进制。这可以使用 biguint-format 包来完成。要安装此软件包,只需使用以下命令:

npm install biguint-format --save

现在您需要将crypto.randomBytes的结果转换为十进制,您可以这样做:

var x= crypto.randomBytes(1);
return format(x, 'dec');

现在您可以创建如下所示的随机函数:

var crypto = require('crypto'),
format = require('biguint-format');

function randomC (qty) {
var x= crypto.randomBytes(qty);
return format(x, 'dec');
}
function random (low, high) {
return randomC(4)/Math.pow(2,4*8-1) * (high - low) + low;
}
console.log(random(50,1000));

关于Node.js - 如何使用 crypto.randomBytes 生成特定范围内的随机数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33609404/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com