所以我正在尝试制作一个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。
答案 0 :(得分:0)
您已经在min
和max
之间生成了一个数字,因此一种实现方法是进行循环,直到您可以返回伪随机数(作为字符串)为止。
示例:
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()来精确地返回指定长度的数字,以防最后生成的数字超出所需的大小,这无关紧要,因为,正如我已经说过的,这不是一个非常精确的算法。
我相信您可以找到一种更好的方法。