Javascript随机数没有重复项不在特定列表中

时间:2016-03-29 15:44:01

标签: javascript random

我正在尝试使用Javascript获取0到30之间的10个随机数的列表。到目前为止一切顺利,但我有另一个具有特定数字的清单(0,5,10,11,12,13,15,16,17,18,20,22,23)。
只有最多随机数组中允许使用此列表的4个数字。这让我很疯狂,因为我不知道要把它结合起来。

我很感激任何帮助。谢谢。

这是我的代码:

<script language="JavaScript" type="text/javascript">
<!--    

function random(min, max, i, filter) {
  var array = {};
  var zufall = [];
  while( i ) {

    var rnd = Math.floor(Math.random() * (max - min + 1)) + min;
    if( !array[rnd] )  {
      array[rnd] = true;
      i--;
      zufall.push(rnd);
    }
  }
  return zufall;
}

var filter = new Array(0,5,10,11,12,13,15,16,17,18,20,22,23);

console.log("Random: " + random(0,30,10,filter) );

//-->
</script>

1 个答案:

答案 0 :(得分:1)

查询提案。

function random(min, max, i, filter) {
    var result = [],
        filterCount = 0,
        rnd;

    while (i) {
        rnd = Math.floor(Math.random() * (max - min + 1)) + min;
        if (~result.indexOf(rnd)) {
            continue;
        }
        if (~filter.indexOf(rnd)) {
            if (filterCount >= 4) {
                continue;
            }
            filterCount++;
        }
        result.push(rnd);
        i--;
    }
    return result;
}

var filter = [0, 5, 10, 11, 12, 13, 15, 16, 17, 18, 20, 22, 23],
    zufall = random(0, 30, 10, filter);    

document.write('<pre>' + JSON.stringify(zufall, 0, 4) + '</pre>');