在不同的输入文本上生成随机数并确保显示的随机数是唯一的

2024-02-24

我正在尝试使用 JQuery 创建一个 JavaScript 代码段,该代码段具有不断变化的随机数,并将显示在不同的文本框中。

但是,我不知道如何使每个文本框的数字显示不同的值。我怎样才能做到这一点?

这是到目前为止我的 JavaScript 代码:

var pcount = $(".pcount");
for(var i= 0; i < pcount.length; i++){
var n = []; 
var element = pcount.eq(i);
setInterval(function() {
    n[i] = 10 + Math.floor(Math.random(Number($( ".pcount" ).val())) * 10);    
    $('.pcount').val(n[i]); 
}, 1000);}

以下是文本框的 HTML 代码:

<input type="text" class="pcount pc1" value="10"/>
<input type="text" class="pcount pc2" value="13"/>
<input type="text" class="pcount pc3" value="16"/>

为了确保随机数确实是唯一的,您必须跟踪之前出现的所有随机数,如果发生冲突,请生成一个新的随机数:

var makeUniqueRandom = (function() {
    var randoms = {};
    return function(low, hi) {
        var rand;
        while (true) {
            rand = Math.floor((Math.random() * (hi - low)) + low);
            if (!randoms[rand]) {
                randoms[rand] = true;
                return rand;
            }
        }
    }
})();

Usage:

var rand = makeUniqueRandom(1, 10);

注意:您必须绝对确保不会耗尽可用的随机数,因为如果这样做,它将变成无限循环。因此,如果您要求提供 1-10 之间的随机数(9 个可能的值),那么调用次数不要超过 9 次。


将随机值放入<input>标签,你可以这样做:

<input type="text" class="pcount pc1" value="10"/>
<input type="text" class="pcount pc2" value="13"/>
<input type="text" class="pcount pc3" value="16"/>

$(".pcount").each(function() {
    this.value = makeUniqueRandom(1, 10);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在不同的输入文本上生成随机数并确保显示的随机数是唯一的 的相关文章

随机推荐