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

Javascript random numbers no duplicates not in specific list

本文关键字:列表 随机数 Javascript      更新时间:2023-09-26

我正试图用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>

一个具有查找功能的提案。

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>');