Open shfshanyue opened 3 years ago
const random = (n) => Math.random().toString(36).slice(2, 2 + n)
random()
// => "c1gdm2"
random()
// => "oir5pp"
山月老师给出的答案:使用 Math.random
产生的随机数进行 36 进制转化,该随机数是由0-9,a-z 构成的。
还有一种方案是对大写字母,小写字母以及数字的 ASCII 码进行转化。
random_v1(4);
random_v1(6);
// ASCII:
// 大写字母:65~90
// 小写字母:97~122
// 数字:48-57
function random_v1(num: number) {
let b = new Array(num)
.fill(0)
.map(() => String.fromCharCode(generateAcsii()))
.join("");
console.log(b);
}
function generateAcsii() {
// 生成 [65,90] && [97,122] && [48,51]
let a = Math.floor(Math.random() * 62); // [0,62]
if (a < 26) {
// 返回 大写字母 的 ASCII
return a + 65;
} else if (a >= 26 && a < 52) {
// 返回 小写字母 的 ASCII
return a - 26 + 97;
} else {
// 返回 数字 的 ASCII
return a - 52 + 48;
}
}
random
接收一个整数作为随机数的个数,最多生成8个随机数