js编写输出10个100到9999之间的随机回文数?

js编写输出10个100到9999之间的随机回文数?
最新回答
怪性酷男人

2026-10-27 09:54:06

下面这个方法可以输出 [100, 9999] 区间的

回文数
,左右都是
闭区间
。如果要左闭右
开区间
,把 for 循环中的 <= 改为 < 即可。for 循环是为了获取区间的所有回文数,while 循环是在所有的回文数中随机获取 10 个。使用 Set 记录获取的随机回文数是为了保证不出现重复数。

function palindrome(start = 100, end = 9999) {

  // 使用数组存储回文数

  const palindromeNumber = [];

  for (let i = start; i <= end; i++) {

    let str = i.toString();


    const radius = Math.floor(str.length / 2);

    // 前半段数字

    const firstHalf = str.substr(0, radius);

    // 后半段数字

    const secondHalf = str.substr(-radius);


    // 前半段数字与逆序的后半段数字相等,则为一个回文数

    // 如 12321: 12 21, 123321: 123 321

    if (firstHalf === secondHalf.split('').reverse().join('')) {

      palindromeNumber.push(i);

    }

  }


  // 区间内所有回文数

  console.log(palindromeNumber);


  // 随机取 10 个, 使用 set 保证数字不重复

  const randomSet = new Set();

  let length = palindromeNumber.length;


  while (1) {

    // 

随机数
有不重复的 10 个,
跳出循环

    if (randomSet.size >= 10) {

      break;

    }

    const i = Math.floor(Math.random() * length);

    randomSet.add(palindromeNumber[i]);

  }


  // 随机的 10 个回文数

  console.log(Array.from(randomSet));

}