random.js 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. /**
  2. * 生成指定长度的随机数字字母组合(确保同时包含字母和数字)
  3. * @param {number} length 要生成的字符串长度
  4. * @returns {string} 随机生成的字符串
  5. */
  6. function generateRandomCode(length = 6) {
  7. const numbers = '0123456789';
  8. const letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  9. const chars = numbers + letters;
  10. // 确保至少包含 1 个数字和 1 个字母
  11. let result = [];
  12. result.push(numbers.charAt(Math.floor(Math.random() * numbers.length))); // 随机一个数字
  13. result.push(letters.charAt(Math.floor(Math.random() * letters.length))); // 随机一个字母
  14. // 生成剩余的字符
  15. for (let i = 2; i < length; i++) {
  16. result.push(chars.charAt(Math.floor(Math.random() * chars.length)));
  17. }
  18. // **打乱数组顺序(Fisher-Yates 洗牌算法,更高效)**
  19. for (let i = result.length - 1; i > 0; i--) {
  20. const j = Math.floor(Math.random() * (i + 1));
  21. [result[i], result[j]] = [result[j], result[i]];
  22. }
  23. return result.join('');
  24. }
  25. module.exports = {
  26. generateRandomCode
  27. }