我想在我的网站上添加一个随机数生成器。该想法是具有在最小值和最大值(即200-400)之间输出随机数的代码,该随机数实时更新,而无需任何页面刷新。我遇到了this,但我并不需要这样做,因为数字是通过点击而不是动态生成的(没有对用户的任何操作)。另外,如果我将范围设置为400并将最小值设置为230,则代码段会输出甚至不在此范围内的数字(即580)。
让数字显示不那么随机(即340,然后是348,然后是367,然后是330,332,330,345,357等)会更好。但这不是强制性的。
感谢您的帮助!
答案 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>