使用JavaScript隨機生成數字混合字母的驗證碼


 
 
          
 
          
<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>
 
          

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM