我从w3schools获得了以下随机函数:
function getRandomInt(min, max) {
var intMin = parseInt(min);
var intMax = parseInt(max);
return (Math.floor(Math.random() * intMax) + intMin);
}
如果我现在设置以下例如:
var min = 1;
var max = 5;
var random = getRandomInt(min, max);
我在1到5之间得到正确的数字。 如果我设置以下内容:
var min = 2;
var max = 6;
var random = getRandomInt(min, max);
我有时也得到数字7.如果min是3且max i 6我有时也会得到8.所以即使w3schools的例子不起作用,如何在[min,max]之间获得随机数?< / p>
答案 0 :(得分:2)
这个功能错了。这是一个固定的:
function getRandomInt(min, max) {
var intMin = parseInt(min);
var intMax = parseInt(max);
return (Math.floor(Math.random() * (intMax-intMin)) + intMin);
}
除非你真的想传递字符串作为输入,否则总是要解析它们是荒谬的。喜欢此版本正常使用:
function getRandomInt(min, max) {
return (Math.floor(Math.random() * (max-min)) + min);
}
与所有随机函数一样,这绝不会产生最大值,但结果为[min,max[
。如果您想在[min,max]
中获得结果(没有偏见),请返回(Math.floor(Math.random() * (max+1-min)) + min)
。
最后一件事。避免使用这个w3schools网站。此站点上有太多错误和缺少精度。
答案 1 :(得分:0)
我是一个非常好的解决方案。请查看此Gist from KnightCoder
if (!Math.prototype.getRandomValueBetween) {
Math.prototype.getRandomValueBetween = function (from, to) {
return Math.floor(Math.random() * (to - from + 1) + from);
};
}
//USAGE -- Math.getRandomValueBetween(100,1000) //950
非常酷的优化代码段。您还可以查看他的要点here
的完整列表如果您发现此答案更好或更正,请将此标记为正确或至少有用。 谢谢:)