今天小编介绍一下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>
全部评论