Javascript随机函数无法正常工作

时间:2015-05-29 08:56:57

标签: javascript

我从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>

2 个答案:

答案 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

的完整列表

如果您发现此答案更好或更正,请将此标记为正确或至少有用。 谢谢:)