无聊,想起用C#写过一个生成随机密码的函数,后来应用过程中发现生成的密码出现很多重复的情况,今天用javascript 重新写了个。
- <script type="text/javascript">
- <!--
- function RndNum(n)
- {
- var rnd="";
- for(var i=0;i<n;i++)
- rnd+=Math.floor(Math.random()*10);
- return rnd;
- }
- var now=new Date();
- var bl=false;
- var arr =new Array();
- for (var j=0;j<1000;j++)
- {
- var v =RndNum(4);
- arr.push(v);
- for(var z = 0;z <arr.length-1;z++)
- {
- if(v == arr[z])
- {
- document.writeln(v+"---重复<br/>");
- bl=true;
- break;
- }
- }
- if(!bl)
- {
- document.writeln(arr[j]+"<br/>");
- }
- bl=false;
- }
- var newnow=new Date();
- N=newnow-now
- alert("所用时间为:"+N+"毫秒")
- //-->
- </script>
经测试,当生成的数量>生成位数的阶乘时,就会出现重复。
例如RndNum(10),当for (var j=0;j<1000;j++)中J的值超过10*9*8*7*6*5*4*3*2*1时,必定重复。