Javascript:随机数生成器(动态)

时间:2017-01-19 01:25:38

标签: javascript

我想在我的网站上添加一个随机数生成器。该想法是具有在最小值和最大值(即200-400)之间输出随机数的代码,该随机数实时更新,而无需任何页面刷新。我遇到了this,但我并不需要这样做,因为数字是通过点击而不是动态生成的(没有对用户的任何操作)。另外,如果我将范围设置为400并将最小值设置为230,则代码段会输出甚至不在此范围内的数字(即580)。

让数字显示不那么随机(即340,然后是348,然后是367,然后是330,332,330,345,357等)会更好。但这不是强制性的。

感谢您的帮助!

2 个答案:

答案 0 :(得分:2)

randWithVariation()将最小值和最大值以及最大偏移量与其先前值相关联,并返回可以使用的函数。

function randWithVariation(min, max, variation) {
  var seed = (Math.floor(Math.random() * max) % (max - min)) + min; // attempts to keep the result within the bounds
  var min = min, max = max, variation = variation;
  var r = function() {
    var offset = Math.floor(Math.random() * variation);
    if (Math.random() < 0.5) offset *= -1; // chance that number will decrease
    seed += offset;
    if (seed < min) return max - seed; // also attempts to keep the result within the bounds
    if (seed > max) return min + (seed - max);
    else return seed;
  }
  return r;
}

var rand = randWithVariation(200, 400, 10);
document.getElementById('rnd').innerHTML = rand();
setInterval(() => {
  document.getElementById('rnd').innerHTML = rand();
}, 500);
<span id="rnd"></span>

答案 1 :(得分:1)

这可以是一个选项: http://www.w3schools.com/code/tryit.asp?filename=FBVP9Q02RZFB

<!DOCTYPE html>
<html>
<body>
<p>Lots of random numbers</p>
<p id="demo"></p>

<script>
//returns a random number beetween min and max
function randMinMax(min , max) {
    return min + Math.floor((Math.random() * max));

}
function updateEveryXms(min , max, ms) {
    //start allredy with a random number instad of waiting ms
    document.getElementById("demo").innerHTML = randMinMax(min,max);
    //do it for ever and ever
    setInterval(
        function(){
            document.getElementById("demo").innerHTML = randMinMax(min,max);
        }, ms);

}

updateEveryXms(10 , 150, 1000);

</script>

</body>
</html>