在不同的输入文本上生成随机数并确保显示的随机数是唯一的
我正在尝试使用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代码:
要确保随机数是真正独一无二的,您必须跟踪之前发生的所有随机数,如果发生冲突,请生成一个新的:
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; } } } })();
用法:
var rand = makeUniqueRandom(1, 10);
注意:您必须绝对确保不会耗尽可用的随机数,因为如果这样做,它将变成无限循环。 因此,如果您要求1-10中的随机数(9个可能的值),则不要将其调用超过9次。
要将随机值放入标记,您可以执行以下操作:
$(".pcount").each(function() { this.value = makeUniqueRandom(1, 10); });