javascript - 每秒生成 0 到 100 之间的增量随机数,其中新数字应大于前一个数字

标签 javascript random counter increment

我需要一个 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.....

最佳答案

您不应该在零和最大值 (i) 之间创建一个新的随机数,而应该在最后创建的数字 (lastNumber) 和最大值 ()。 当随机数达到最大值时,您也可能想停止。

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();

至于评论和达到最大值之前的最小步数要求:

在每次迭代中,只需将数字增加一个介于 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();

关于javascript - 每秒生成 0 到 100 之间的增量随机数,其中新数字应大于前一个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26297997/

相关文章:

javascript - 使用 Leaflet 和本地主机拒绝位置访问

javascript - 在对象数组中添加数字

ios - 需要在iOS中生成一个至少包含一个数字的随机数

MySQL生成按父ID分组的实时计数器

javascript - 需要 firefox/IE designMode 引用

javascript - React JS 的输入范围

javascript - 在 p5.js 中使用 random() 函数

mysql - Rails - 如何从对象中获取随机记录?

mysql - 如何在某些状态更改时排除增加 counter_cache?

java - 如何在 Java 中实现并发循环自动收报机(计数器)?