具有随机唯一数字的数组js

时间:2017-07-10 20:28:25

标签: javascript jquery arrays

我想获得随机唯一数字的数组。

我为

制作周期
var row = [];
var count = 10;

function getRandomArbitary(min, max) {
  return Math.random() * (max - min) + min;
}

function searchRandom() {
  var rdm = Math.floor(getRandomArbitary(1, 20));

  for (var i = 0; i < row.length; i++) {
    if (rdm == row[i]) {
      searchRandom();
    }
  }
  row.push(rdm);
}

然后,如果我想要数组中的10个数字,我将进行下一个周期

for (var i = 0; i < count; i++) {
  searchRandom();
}

console.log(row);

但它没有用(

3 个答案:

答案 0 :(得分:1)

仅仅让函数将选项作为参数并返回数组会更容易吗?

&#13;
&#13;
function randomArray(count, min, max) {
  if (count > (max - min)) return;
  var arr = [], t;

  while (count) {
    t = Math.floor(Math.random() * (max - min) + min);
    if (arr.indexOf(t) === -1) {
      arr.push(t);
      count--;
    }
  }

  return arr;
}

console.log(randomArray(10, 1, 20));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我想,我没有在我的系统上运行它 但这应该有用

{% block collection_row %}<div>I Love Symfony! (or just use parent())</div>{% endblock collection_row %}

注意嵌套function searchRandom() { var rdm = Math.floor(getRandomArbitary(1, 20)); for (var i = 0; i < row.length; i++) { if (rdm == row[i]) { searchRandom(); return; } } row.push(rdm); }

之后的return语句

这将阻止您进入不正确的情况,例如,直到现在行已经[1,2]。而下一个随机数是1;

答案 2 :(得分:0)

在这种情况下你为什么递归调用搜索方法?

你可以从1循环到len(或0到len-1),并等到你生成一个简单的while循环不存在的随机数。这是一个例子

&#13;
&#13;
var generateRandomArray = function(len, min, max) {
    if(len> (max-min)) {return;}
    var array = [],
        getRandomArbitary = function(min, max) {
            return Math.floor(Math.random() * (max - min) + min);
        },
        idx;
    for (idx = 0; idx < len; idx++) {
        var num;
        while (array.includes(num = getRandomArbitary(min,max))) {}
        array.push(num)
    }

    return array;
}

console.log('Random Array of 5 element from 10 to 20: ', generateRandomArray(5, 10,20))
&#13;
&#13;
&#13;