Javascript 0和9之间的唯一四位引脚生成器
我正在尝试建立一个独特的引脚生成器,这样4个引脚编号就不会有3个或更多的连续编号。 以下是我得到的: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
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