如何验证生成的4位随机数非降序排列?代码问题求助
修复4位随机数降序验证的JavaScript代码
原代码存在两个核心问题:
- 循环中使用
++i导致索引跳步,仅检查了前两位就终止判断 - 只要一次对比不满足就直接返回,没有完成完整的降序校验
要实现「生成非降序的4位随机数」需求,正确的逻辑是:先验证数字是否完全降序(每一位都大于下一位),如果是则重新生成,直到得到符合要求的数。
修复后的代码如下:
// 验证数字是否为完全降序排列 function isDescending(n) { const numStr = n.toString(); // 遍历每一位,对比当前位与下一位 for (let i = 0; i < numStr.length - 1; i++) { // 如果当前位不大于下一位,说明不是降序 if (numStr[i] <= numStr[i + 1]) { return false; } } // 所有位都满足前>后,是降序 return true; } // 生成符合要求的4位随机数 function generateValid4DigitNum() { let num; do { // 生成4位随机数(1000-9999) num = Math.floor(1000 + Math.random() * 9000); // 如果是降序则重新生成 } while (isDescending(num)); alert(`生成的有效数字:${num}`); return num; } // 执行生成 generateValid4DigitNum();
代码说明:
isDescending函数专门负责降序校验:遍历数字的每一位,只要有一位不大于下一位,就判定为非降序,返回false;只有所有位都满足前位>后位时,才返回truegenerateValid4DigitNum函数通过do-while循环持续生成随机数,直到得到非降序的数字为止,确保最终返回的数符合要求
内容的提问来源于stack exchange,提问作者shada
相关产品推荐
相关产品推荐

