如何将随机字节转换为整数范围
Converting random bytes to an integer range - how?
我正试图通过读取crypto.randomBytes((.来获得一个范围内的随机整数
现在,我的问题是,我不知道如何从字节流中读取整数。我认为生成一个范围只是"扔掉"不在范围内的int。
有什么想法吗?
您可以使用下面的代码从crypto.randomBytes
中获得一个32位整数。如果需要多个字节,可以从crypto.randomBytes
请求更多字节,然后使用substr
单独选择和转换每个整数。
crypto.randomBytes(4, function(ex, buf) {
var hex = buf.toString('hex');
var myInt32 = parseInt(hex, 16);
});
话虽如此,您可能只想使用Math.floor(Math.random() * maxInteger)
在NodeJS 中的[0,1)
区间(即与Math.random()
相同(中获得加密安全且均匀分布的值
const random = crypto.randomBytes(4).readUInt32LE() / 0x100000000;
console.log(random); //e.g. 0.9002735135145485
或在浏览器中
const random = window.crypto.getRandomValues(new Uint32Array(1))[0] / 0x100000000;
console.log(random);
const { randomInt } = await import('crypto');
const n = randomInt(1, 7);
console.log(`The dice rolled: ${n}`);
现在它在节点本身中实现https://nodejs.org/api/crypto.html#crypto_crypto_randomint_min_max_callback
相关文章:
- 正在全局范围中查找JavaScript函数
- 如何通过数组更新角度子范围
- 如何使用js将SNAPSHOT内部版本号转换为3位数的整数
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- 检测个位数整数时正在转换毫秒
- 限制javascript变量的最小/最大整数
- 如何在node.js中设置mysql连接,以在带无符号整数的算术上抛出超出范围的错误
- Javascript填充缺失的范围(整数)
- 计算范围内的整数
- JavaScript中最大范围的连续整数
- 在检查多个整数范围时替换多个if语句
- jQuery:如何生成给定极限/范围的3个不同的随机整数
- 检查整数是否在其中一个范围内
- 如何将随机字节转换为整数范围
- 无效的列索引未定义.取值范围为[0-8]之间的整数
- 生成范围内不以零开始的随机整数
- 映射整数范围的最佳d3比例
- 随机大整数在范围JavaScript
- 为大范围整数生成随机顺序的聪明方法
- 在JavaScript中打开整数范围