您的位置:首页 > Web前端 > JavaScript

使用JavaScript随机生成数字混合字母的验证码

2019-08-22 08:37 225 查看
原文链接:http://www.cnblogs.com/funseey/p/11392278.html  



<script>
// 封装一个随机生成数字的函数
function random(a, b) {
var n = Math.round(Math.random() * (a - b) + b);
return n;
}

//=====================================有漏洞版=============================================
function getCode(){
//定义一个字符串把所有可能都装进去,全部字母以及数字
var codeStr = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";

//声明一个空的字符串,用作装随机生成的四个数。
var str = "";

//写一个循环用来重复随机生成几个数,以及将东西一个一个放进上面声明的空字符串内
for (var i = 0; i < 4; i++) {
var m = random(0,61);
str += codeStr.charAt(m);
}
// 在外面调用函数时,一定要在函数内写返回值
return str;
}

//调用函数
console.log(getCode());
//====================================更为严谨版==============================================

//运行一下上面的代码我们会发现,字母出现的几率远远大过数字出现的几率。这是因为codeStr里面的字母有52个,
//  数字却只有10个,而这样并不能算是真正的随机。故我补充了下面的代码。

//思路:做一个随机生成数的库strData,循环四次,每次都会产生大写字母、小写字母、数字 各三个,也就是说strData
//      里面放了12个数。再在strData库中随机(这样的随机才是真正的随机,每种可能的几率都是相同的)抽取四个数,
//      放在新声明的str里,并且输出

//封装一个随机生成数的库
function randomStr(){
var strData = "";
//如果觉得12个数太少也可以多放点,将i<4修改即可
for(var i=0;i<4;i++){
var num = random(0,9);                              //数字
var upper = String.fromCharCode(random(65,90));     //大写字母
var lower = String.fromCharCode(random(97,122));    //小写字母
strData = strData+num+upper+lower;                  //将所有结果放进strData中

}
var str = "";
for (var i = 0; i < 4; i++) {
str += strData[random(0,strData.length-1)];         //在strData里面随机抽取四个数
}
return str;

}

console.log(randomStr())

</script>

 

 

 

转载于:https://www.cnblogs.com/funseey/p/11392278.html

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: