生成彼此不同的随机数Jquery

时间:2017-12-17 12:56:29

标签: javascript jquery

我的桌子生成7个蓝色的随机框,还有5个其他黄色的随机框,但我的问题是有时候是一个盒子" Id"可以有2或3倍相同的随机值,我们只看到5个蓝色框,而不是预期的7个。我该如何解决?如果盒子是蓝色的,它不能是第二次,如果是蓝色,它不能是黄色等。

function bluecolor() {
  $(".boutton2").click(function() {
      for (i = 0; i < 7; i++) {
        var rn = Math.floor(Math.random() * 28) + 1;

        $("#" + rn).addClass("blue");
      }
      for (a = 0; a < 5; a++) {
        var randome = Math.floor(Math.random() * 28) + 1;
        $("#" + randome).addClass("yellow");
      }
    }
  }

3 个答案:

答案 0 :(得分:2)

我在你的代码中看到你似乎有29个盒子,而不是12个盒子,从1到29编号。我知道你想要7个蓝色和5个黄色。正确?

您可以制作一个包含28个ID(数字1到29)的数组,它们和#34; shuffle&#34;它,asign class blue到第7个,黄色到下一个5 ......(如果需要的话,删除其他的类)。

(看看How can I shuffle an array?

答案 1 :(得分:0)

您可以使用$("#" + randome).length > 0来验证是否已添加了ID,或者$(".myClass").length > 0如果您想使用此类,则可以使用{。}}。

您也可以使用数组并验证数字,只选择不同的数字。

&#13;
&#13;
var numbers = [];

while(numbers.length < 5){
   var number = Math.floor(Math.random() * 28) + 1;
   if(numbers.indexOf(number) == -1){
      numbers.push(number);
   }
}
console.log(numbers);
&#13;
&#13;
&#13;

您可以多次使用功能:

&#13;
&#13;
function getRandomNotEqualNumbers(quantity, max, min){
  var numbers = [];

  while(numbers.length < quantity){
     var number = Math.floor(Math.random() * max) + min;
    if(numbers.indexOf(number) == -1){
       numbers.push(number);
    }
  }
  return numbers;
}

var blues = getRandomNotEqualNumbers(7, 28, 1);
var yellows = getRandomNotEqualNumbers(5, 28, 1);

console.log(blues);
console.log(yellows);

//if you want unique between colors
var myNumbers = getRandomNotEqualNumbers(12, 28, 1);
blues = [];
yellows = [];
for(var i = 0; i < myNumbers.length; i++){
  if(i < 7)
    blues[i] = myNumbers[i];
  else
    yellows[i-7] = myNumbers[i];
}

console.log(blues);
console.log(yellows);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

为避免重复数字,请为您生成的每个数字生成一个arraylist。