方法一:生成随机数转成 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(',') + '
' + '已排序:' + 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>