Javascript 0和9之间的唯一四位引脚生成器

Javascript 0和9之间的唯一四位引脚生成器,javascript,Javascript,我正在尝试建立一个独特的引脚生成器,这样4个引脚编号就不会有3个或更多的连续编号。 以下是我得到的: function getRandomNumber(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min + 1)) + min; } function saveToArray() { let arr = []; for (le

我正在尝试建立一个独特的引脚生成器,这样4个引脚编号就不会有3个或更多的连续编号。 以下是我得到的:

function getRandomNumber(min, max) {
  min = Math.ceil(min);
  max = Math.floor(max);
  return Math.floor(Math.random() * (max - min + 1)) + min;
}

function saveToArray() {
  let arr = [];
  for (let index = 0; index < 4; index++) {
    let result = getRandomNumber(0, 9);
    arr.push(result);
  }
  /* if (consecutive(arr)) {
    console.log('1', arr);
    return arr;
  } else {
    saveToArray;
  } */
  return arr;
}

/* function consecutive(arr) {
  for (let i = 1; i < arr.length; i++) {
    if (arr[i] != arr[i - 1] + 1) {
      return false;
    }
  }
  return true;
} */

console.log(saveToArray());
连续函数仅具有[0,1,2,3]或[4,5,6,7]之类的管脚 如果我把它注释掉,就会生成pin码,但是我没有这个函数,可以通过升序或降序来验证连续的数字


有关于我遗漏什么的提示吗?

连续整数相差1。您可以只添加连续索引之间的差异

function nonConsecutive(x) {  
    console.log(x)
    if((x[1]-x[0]) + (x[2]-x[1]) == 2 || (x[3]-x[2]) + (x[2]-x[1]) == 2)
        return false
    return true
}

要检查某个数字是否连续,可以执行以下操作:

function isConsecutive(n1, n2) {
  return Math.abs(n1 - n2) === 1;
};
验证阵列的一种方法是,将情况视为1,2,3,4和7,6,5,4,如下所示:

function isValid(array) {
    for (let i = 0; i + 2 < array.length; i++) {
        let n1 = array[i], n2 = array[i+1], n3 = array[i+2];
        if (isConsecutive(n1, n2) && isConsecutive(n2, n3))
          return false;
    }
    return true;
};

此代码返回具有非相等和非连续数字的随机管脚。当找到相同或连续的数字时,我在结果中加上3%10,我认为这就足够了

函数随机化{ 返回Math.floorMath.random*10; } var fullRand=,iNewRand,iRand; 对于var i=0;i<4;i++{ iNewRand=随机; 如果i>0{ 如果Math.absiNewRand-iRand