我需要一个javascript,其中每隔一次调用我得到一个0-100之间的随机数,其中当前数字应该大于之前的数字。我写了一个代码来获取每秒随机数,但坚持用增量生成它。
<script>
var span = document.getElementsByTagName("span")[3];
var i = 100;
(function randNumber() {
var a = Math.floor((Math.random() * i) + 1);
span.innerHTML = "RandNumber: " + a;
setTimeout( randNumber, 1000);
})();
注意:数字应随机生成
示例结果可能是:2,5,7,8,22,23,34,56,78,88.....
答案 0 :(得分:3)
您不应该在零和最大值(i
)之间创建一个新的随机数,而只是在最后创建的数字(lastNumber
)和最大值(i
)之间。
当随机数达到最大值时,你也可能想要停止。
var span = document.getElementsByTagName("span")[3],
i = 100,
lastNumber = 0;
function randNumber() {
lastNumber = lastNumber + Math.floor( Math.random() * (i - lastNumber) + 1 );
span.innerHTML = lastNumber;
if( lastNumber < i ) {
setTimeout( randNumber, 1000 );
}
}
randNumber();
AS的评论和最低步骤的要求,直到达到最大值:
在每次迭代中,只需将您的数字增加1
和((max - min) / steps
之间的随机值。它与上面的代码完全相同。
var span = document.getElementsByTagName("span")[3],
max = 100,
min = 0,
lastNumber = 0,
minSteps = 30;
// how wide can the average step be at most?
var stepWidth = (max - min) / minSteps;
function randNumber() {
lastNumber = lastNumber + Math.floor( Math.random() * stepWidth + 1 );
span.innerHTML = lastNumber;
if( lastNumber < max ) {
setTimeout( randNumber, 1000 );
}
}
randNumber();
答案 1 :(得分:0)
如果你将“两个数字之间”的逻辑提取到它自己的函数中,这就变得容易多了。这样,您只需在上次生成的数字和最大数字之间生成一个数字。
var max = 100
var last_number = 1
var interval_id = setInterval(function(){
last_number = get_random_number_greater_between(last_number, max)
span.innerHTML = "RandNumber: " + last_number;
if(last_number >= max){
window.clearInterval(interval_id)
}
}, 1000)
function get_random_number_greater_between(low, high){
return Math.floor(Math.random() * (high - low + 1) + low);
}
答案 2 :(得分:0)
试试这个:
// generate a random number from 0 to max - 1.
function rand(max) {
return Math.floor(max * Math.random());
}
// generate a random number from min to max.
function range(min, max) {
return min + rand(1 + max - min);
}
// the loop function
function next(n, callback) {
var m = range(n, 100);
if (m < 100) setTimeout(next, 1000, m + 1, callback);
callback(m);
}
var span = document.getElementById("rand");
next(0, function (m) {
span.innerHTML = "Random number: " + m;
});
<span id="rand"></span>