do {
if(type==3)//1-9直加直减
{
number = Math.floor(Math.random() * 9) + 1; // 1-9的随机数
operator = operators[Math.floor(Math.random() * 2)];
if (operator === '+') {//当做加法时
if((result>4 && result<9) || result===0)//当上一个结果是0、5~8时,与下一个数的和<=9
{
validNumber = result + number <= 9;
}
else if(result===9)//当上一个结果是9时,跳过
{
validNumber = false;
}
else//当上一个结果是1~4时,与下一个数的和<=4
{
validNumber = result + number <= 4;
}
}else{//当做减法时
if(result===5)//当上一个结果是5时,与下一个数的差=0
{
validNumber = result - number == 0;
}
else if(result===6)//当上一个结果是6时,与下一个数的差是0、1、5
{
validNumber = result - number == 0 || result - number == 1 || result - number == 5;
}
else if(result===7)//当上一个结果是7时,与下一个数的差是0~2、5、6
{
validNumber = (result - number >= 0 && result - number <= 2) || result - number == 5 || result - number == 6;
}
else if(result===8)//当上一个结果是8时,与下一个数的差是0~3、5~7
{
validNumber = (result - number >= 0 && result - number <= 3) || (result - number >= 5 && result - number <= 7);
}
else if(result===9)//当上一个结果是9时,与下一个数的差是0~8
{
validNumber = result - number >= 0 && result - number <= 8;
}
else//当上一个结果是0~4时,与下一个数的差是>=0
{
validNumber = result - number >= 0;
}
}
}
} while (!validNumber);
上面是一位数的随机加减法的逻辑判断,现在我想弄一个两位数的随机加减法,这两位数如果把个位和十位单独来判断,那么逻辑判断与上面的一位数加减法逻辑判断是一样的,请看仔细上面的逻辑,不是简单的result >= 10 && result <= 99