首页 新闻 搜索 专区 学院

这是一个随机数的例子,可是每次随机数他都会有重复的字母或者数字出现,我想问一下怎么让他出来的随机数不

0
[已解决问题] 解决于 2014-07-02 15:23

这是一个随机数的例子,可是每次随机数他都会有重复的字母或者数字出现,我想问一下怎么让他出来的随机数不一样呢!其实就是去重,请大神帮忙解决???谢谢

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
<h3>验证码</h3>
<div id="box" style="width:200px; height:50px; background:#b52096;
color:#000; font-size:28px; text-align:center; line-height:50px; letter-spacing:0.5em;"></div>
</body>
</html>
<script type="text/javascript">
//数学方法:
//Math.ceil(); 向上取整
//Math.floor(); 向下取整
//Math.round(); 四舍五入
//Math.abs(); 绝对值
//Math.random(); 随机数

var oDiv = document.getElementById("box");
var str = "";
function sjMath(len) {
for (var i = 0; i < len; i++) {
var arr = "QWERTYUIOPLKJHGFDSAZXCVBNM1234567890";
var n = Math.round(Math.random() * 34);
var sj = arr.charAt(n);
str += sj;
};
oDiv.innerHTML = str;
};
sjMath(5);

</script>

xiaoleilei的主页 xiaoleilei | 初学一级 | 园豆:80
提问于:2014-06-30 13:17
< >
分享
最佳答案
0
var arr="Q,W,E,R,T,Y,U,I,O,P,L,K,J,H,G,F,D,S,A,Z,X,C,V,B,N,M,1,2,3,4,5,6,7,8,9,0";
var array=arr.split(",");
for(var i=0;i<len&&array.length>0;i++)
{
var n=Math.round(Math.random()*array.length);
var sj=array[n];
array.splice(n,1);
str+=sj;
}
奖励园豆:5
飞来飞去 | 老鸟四级 |园豆:2057 | 2014-06-30 13:30

楼主啊,我写的有个问题,有极小概率n=array.length,这个时候array[n]会报错,你自己加下判断哈

飞来飞去 | 园豆:2057 (老鸟四级) | 2014-07-02 16:09
其他回答(1)
0

 你把"QWERTYUIOPLKJHGFDSAZXCVBNM1234567890"通过给随机掉,然后顺序来找单个字符就实现了

 

QWERTYUIOPLKJHGFDSAZXCVBNM1234567890 随机打乱:

var str = "QWERTYUIOPLKJHGFDSAZXCVBNM1234567890";

for(var i = 0;i<34;i++){

  var n = Math.round(Math.random() * 34);

  var temp = str[i];

  str[n]=str[i];

  str[i]=temp;

}

具体原理就是这样了,不过语法可能是错的,你自己实现一下

刘宏玺 | 园豆:14006 (专家六级) | 2014-06-30 13:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册