我正在尝试构建一个脚本集,随机生成一到六个之间的数字,只显示浏览器中的数字。在开始时,可以设置间隔的值。我有一个完全符合我要求的代码。唯一的问题是间隔不平滑。它以某种方式口吃。 有人知道如何改进随机数字流利显示的代码吗?
<html>
<body>
<p style="font-size: 500; color: red; text-align: center" id="random_number"></p>
<script>
var interval = parseInt(prompt("Intervall [ms]:", ""));
fRandomNumbers(1,6);
window.setInterval(function(){fRandomNumbers(1,6)}, interval);
function fRandomNumbers(min,max)
{
var random_number = Math.floor( Math.random() * ( max - min + 1 ) ) + min;
document.getElementById("random_number").innerHTML = random_number;
}
</script>
</body>
</html>
答案 0 :(得分:1)
就像@CoreyOgburn和@Iwburk指出的那样,问题是有时你会得到相同的数字:
你有六分之一的机会选择相同的号码两次 一行,当发生这种情况时,看起来数字没有改变。
然后,要解决它,只需确保新的随机数与前一个不同:
var interval = parseInt(prompt("Intervall [ms]:", "")),
random_number;
fRandomNumbers(1,6);
window.setInterval(function(){fRandomNumbers(1,6)}, interval);
function rand(min,max,diff) {
var n;
while(diff === (n = Math.floor( Math.random() * ( max - min + 1 ) ) + min)){}
return n;
}
function fRandomNumbers(min,max)
{
random_number = rand(min,max,random_number);
document.getElementById("random_number").innerHTML = random_number;
}
警告1 :上面的rand
函数会产生无限循环,例如:如果被称为rand(1,1,1)
警告2 :请注意,生成的数字序列不会是随机的,因为(足够大的)真随机序列将包含一些相等的相邻数字。然后,正如@CoreyOgburn指出的那样,它不能很好地模仿骰子。