JS生成随机字符串

43人浏览 / 0人评论 / 添加收藏

今天小编介绍一下Javascript生成随机字符串的两种方法。


方法一:生成随机数转成 36 进制,再截取部分

36表示36进制(包含数字[10个]、字母[26个])

const randomStr = Math.random().toString(36).substring(2);
方法二:

console.log(this.randomStr(5));

/** 生成随机字符串
* @param len 随机字符串长度,默认32位
* @returns {string} 随机字符串
*/
randomStr(len = 32) {
 let t = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm1234567890";
 let val = "";
 for (let i = 0; i < len; i++) {
   val += t.charAt(Math.floor(Math.random() * t.length));
 }
 return val;
}
生成不重复的随机数
/** 生成不重复的随机数
* @param {Object} extent.需要的随机数个数
* @param {Object} range.随机数范围(从 0 ~ range-1 中随机选取)
*/
function createRandomNum(extent, range) {
 let randomArr = []; // 生成的随机数组
 while (randomArr.length < extent) {
   const num = Math.floor(Math.random() * range);
   if (randomArr.indexOf(num) === -1) randomArr.push(num);
 }
 console.log('randomArr', randomArr);
 console.log('未排序:' + randomArr.join(',') + '\n' + '已排序:' + randomArr.sort().join(','));
}
生成指定范围内的随机数(包含最大值和最小值)
/** 生成指定范围内的随机数(包含最大值和最小值)
* @param {Object} min.范围内最小值
* @param {Object} max.范围内最大值
*/
function assignRandomMinMaxInclude(min, max) {
 const range = max - min;
 const rand = Math.random();
 const num = min + Math.round(rand * range); // 四舍五入
 console.log(num);
}
生成指定范围内的随机数(包含最小值)
/** 生成指定范围内的随机数(包含最小值)
* @param {Object} min.范围内最小值
* @param {Object} max.范围内最大值
*/
function assignRandomMinInclude(min, max) {
 const range = max - min;
 const rand = Math.random();
 const num = min + Math.floor(rand * range); // 舍去
 console.log(num);
}
生成指定范围内的随机数(包含最大值)
/** 生成指定范围内的随机数(包含最大值)
* @param {Object} min.范围内最小值
* @param {Object} max.范围内最大值
*/
function assignRandomMaxInclude(min, max) {
 const range = max - min;
 const rand = Math.random();
 if (Math.round(rand * range) === 0) {
   return min + 1;
 }
 const num = min + Math.round(rand * range);
 console.log(num);
}
生成指定范围内的随机数(不包含范围值)
/** 生成指定范围内的随机数(不包含范围值)
* @param {Object} min.范围内最小值
* @param {Object} max.范围内最大值
*/
function assignRandomNotInclude(min, max) {
 const range = max - min;
 const rand = Math.random();
 let val = 0;
 if (Math.round(rand * range) === 0 || Math.round(rand * range) === 1) {
   val = min + 1;
 } else if (Math.round(rand * max) === max) {
   val = max - 1;
 } else {
   val = min + Math.round(rand * range) - 1;
 }
 console.log(val);
}
完整代码
<!DOCTYPE html>
<html>
 <head>
   <meta charset="utf-8">
   <title>JS生成随机数</title>
   <script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
 </head>
 <body>
   <div style="margin-top: 30px">
     <button onclick="createRandomNum(20, 20)">生成不重复的随机数 [20位,0~19的随机数]</button>
     <div id="noRepeat" style="margin-top: 10px"></div>
   </div>
   <div style="margin-top: 30px">
     <button onclick="assignRandomMinMaxInclude(10, 19)">生成指定范围内的随机数(包含最大值和最小值) [范围值为10~19之内]</button>
     <div id="rangeValidator1" style="margin-top: 10px"></div>
   </div>
   <div style="margin-top: 30px">
     <button onclick="assignRandomMinInclude(10, 19)">生成指定范围内的随机数(包含最小值) [范围值为10~19之内]</button>
     <div id="rangeValidator2" style="margin-top: 10px"></div>
   </div>
   <div style="margin-top: 30px">
     <button onclick="assignRandomMaxInclude(10, 19)">生成指定范围内的随机数(包含最大值) [范围值为10~19之内]</button>
     <div id="rangeValidator3" style="margin-top: 10px"></div>
   </div>
   <div style="margin-top: 30px">
     <button onclick="assignRandomNotInclude(10, 19)">生成指定范围内的随机数(不包含范围值) [范围值为10~19之内]</button>
     <div id="rangeValidator4" style="margin-top: 10px"></div>
   </div>
   <script type="text/javascript">
     /** 生成不重复的随机数
      * @param {Object} extent.需要的随机数个数
      * @param {Object} range.随机数范围(从 0 ~ range-1 中随机选取)
      */
     function createRandomNum(extent, range) {
       let randomArr = []; // 生成的随机数组
       while (randomArr.length < extent) {
         const num = Math.floor(Math.random() * range);
         if (randomArr.indexOf(num) === -1) randomArr.push(num);
       }
       console.log('randomArr', randomArr);
       $('#noRepeat').html('未排序:' + randomArr.join(',') + '<br/>' + '已排序:' + randomArr.sort().join(','));
     }

     /** 生成指定范围内的随机数(包含最大值和最小值)
      * @param {Object} min.范围内最小值
      * @param {Object} max.范围内最大值
      */
     function assignRandomMinMaxInclude(min, max) {
       const range = max - min;
       const rand = Math.random();
       const num = min + Math.round(rand * range); // 四舍五入
       console.log(num);
       $('#rangeValidator1').html('随机值:' + num);
     }

     /** 生成指定范围内的随机数(包含最小值)
      * @param {Object} min.范围内最小值
      * @param {Object} max.范围内最大值
      */
     function assignRandomMinInclude(min, max) {
       const range = max - min;
       const rand = Math.random();
       const num = min + Math.floor(rand * range); // 舍去
       console.log(num);
       $('#rangeValidator2').html('随机值:' + num);
     }

     /** 生成指定范围内的随机数(包含最大值)
      * @param {Object} min.范围内最小值
      * @param {Object} max.范围内最大值
      */
     function assignRandomMaxInclude(min, max) {
       const range = max - min;
       const rand = Math.random();
       if (Math.round(rand * range) === 0) {
         return min + 1;
       }
       const num = min + Math.round(rand * range);
       console.log(num);
       $('#rangeValidator3').html('随机值:' + num);
     }

     /** 生成指定范围内的随机数(不包含范围值)
      * @param {Object} min.范围内最小值
      * @param {Object} max.范围内最大值
      */
     function assignRandomNotInclude(min, max) {
       const range = max - min;
       const rand = Math.random();
       let val = 0;
       if (Math.round(rand * range) === 0 || Math.round(rand * range) === 1) {
         val = min + 1;
       } else if (Math.round(rand * max) === max) {
         val = max - 1;
       } else {
         val = min + Math.round(rand * range) - 1;
       }
       console.log('val=', val);
       $('#rangeValidator4').html('随机值:' + val);
     }
   </script>
 </body>
</html>
 

 

全部评论