如何使此RNG具有尺寸?

时间:2019-02-19 11:54:49

标签: javascript node.js

所以我正在尝试制作一个NPM软件包。如果用户指定了最小值和最大值,它会在设计范围之间生成随机数。我想要的是,也要有一个控件来使其生成数字字符串(?)。

因此,如果应用内的用户指定了:

min = 0;
max = 21;
size = 23;
token(min, max, size); 

它将指定一个23个字符的数字字符串(?),其随机数在0到21之间。是否可以这样做?

包装代码为:

module.exports = function token(min, max, size) {
    var size = size || 128;
    var newToken = (Math.floor(Math.random() * (max - min + 1)) + min);
    return (newToken[size]);
};

我尝试了很多事情,但是最终返回了NaN或undefined。

1 个答案:

答案 0 :(得分:0)

您已经在minmax之间生成了一个数字,因此一种实现方法是进行循环,直到您可以返回伪随机数(作为字符串)为止。

示例:

function token(min, max, size) {
  var size = size || 128;
  var newToken = '';
  while (newToken.length < size) {
    newToken += Math.floor(Math.random() * (max - min + 1) + min);
  }
  return newToken.substring(0, size);
};
  
var res = token(0, 21, 23);
console.log(res);
console.log(res.length);

在这里,我使用一种丑陋的方法,借助substring()来精确地返回指定长度的数字,以防最后生成的数字超出所需的大小,这无关紧要,因为,正如我已经说过的,这不是一个非常精确的算法。

我相信您可以找到一种更好的方法。