weixin_41244451 2024-06-14 16:24 采纳率: 93.9%
浏览 1
已结题

想弄一个两位数的随机加减法,这两位数如果把个位和十位单独来判断,那么逻辑判断与一位数的随机加减法逻辑判断是一样的,应该怎么写代码?

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)//当上一个结果是05~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时,与下一个数的差是015
                        {
                            validNumber = result - number == 0 || result - number == 1 || result - number == 5;
                        }
                        else if(result===7)//当上一个结果是7时,与下一个数的差是0~256
                        {
                            validNumber = (result - number >= 0 && result - number <= 2) || result - number == 5 || result - number == 6;
                        }
                        else if(result===8)//当上一个结果是8时,与下一个数的差是0~35~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);

上面是一位数的随机加减法的逻辑判断,可以正常使用。
现在我想弄一个两位数的随机加减法,这两位数如果把个位和十位单独来判断,那么逻辑判断与一位数的随机加减法逻辑判断是一样的,应该怎么写代码?

  • 写回答

4条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-14 16:24
    关注

    引自免费微信小程序:皆我百晓生

    要将上述逻辑应用于两位数的随机加减法,我们首先需要理解原逻辑的核心:它确保了每次运算后的结果保持在特定范围内(对于加法为1到9,对于减法为0到9)。对于两位数,我们可以分解每个数字的十位和个位分别处理,然后组合起来形成最终的两位数结果。

    以下是一个JavaScript示例,展示了如何实现两位数的随机加减法,并保持个位和十位的运算逻辑与一位数相同:

    function generateTwoDigitOperation(type) {
        let resultTen = 0, resultUnit = 0; // 初始化十位和个位的结果
        const operators = ['+', '-'];
        const validNumber = false;
    
        // 循环直到找到有效的运算
        do {
            const numberTen = Math.floor(Math.random() * 9) + 1; // 随机生成十位数
            const numberUnit = Math.floor(Math.random() * 9) + 1; // 随机生成个位数
            const operator = operators[Math.floor(Math.random() * 2)];
            
            // 生成两位数
            const number = numberTen * 10 + numberUnit;
            
            // 分别对十位和个位应用逻辑判断
            if (type === 3) {
                // 对十位数进行逻辑判断
                if (operator === '+') {
                    // 加法规则:十位数的和应在1-9之间
                    resultTen += numberTen;
                    resultTen = Math.min(9, resultTen); // 确保不超过9
                } else {
                    // 减法规则:十位数的差应非负且小于等于9
                    resultTen -= numberTen;
                    resultTen = Math.max(0, resultTen); // 确保不小于0
                }
    
                // 对个位数进行逻辑判断
                if (operator === '+') {
                    // 加法规则:个位数的和应在1-9之间
                    resultUnit += numberUnit;
                    resultUnit = Math.min(9, resultUnit); // 确保不超过9
                } else {
                    // 减法规则:个位数的差应非负且小于等于9
                    resultUnit -= numberUnit;
                    resultUnit = Math.max(0, resultUnit); // 确保不小于0
                }
                
                // 检查是否有效
                validNumber = resultTen < 10 && resultUnit < 10;
            }
        } while (!validNumber);
    
        return resultTen * 10 + resultUnit; // 返回两位数结果
    }
    
    // 测试函数
    console.log(generateTwoDigitOperation(3));
    

    这个函数generateTwoDigitOperation通过循环生成随机的两位数,并根据指定的运算类型(在这个例子中是直加直减)更新十位和个位的结果。通过分别控制十位和个位的结果范围,我们能够确保最终的两位数结果符合预期的逻辑规则。注意,在实际应用中,你可能需要根据具体需求调整生成的随机数范围以及结果的处理方式。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(3条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月15日
  • 已采纳回答 6月15日
  • 创建了问题 6月14日

悬赏问题

  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享