随机产生5个从0到10之间不重复的整数

    既然是随机,就必然会用到Math.random(),它能随机产生大于等于0,小于等于1的数字。
    我们要的是0到10之间的整数,所以我们将它乘10。(Math.random()*10)
    我们要的是整数,因此,我们需要将它四舍五入为整数,只剩0,1,2,3,4,5,6,7,8,9,10。(Math.round( Math.random()*10 ))
    既然要产生5个这样的数字,重复性的操作要交给循环来做,这里我们使用for循环:
var str='';
var arr=[];
for(i=0;i<5;i++){
    str = Math.round( Math.random()*10 );
    arr.push(str);//把str添加到数组arr中
}
document.write(arr);
    这样数组arr里面便储存了产生的5个0到10之间的随机数,我们运行一下发现里面可能会有重复的数字。因此接下来我们的重头戏是去重复数字:
var str='';
var arr=[];
for(i=0;i<5;i++){
    str = Math.round( Math.random()*10 );
    //在将str添加到数组里面之前,我们先检查,把数组里面已有的数字中与将要添加的str相同的数字删掉,这样便保证了数组arr中没有重数,这里又要用到for循环:
    for(j=0;j<arr.length;j++){
            if(arr[j]==str){
                arr.splice(j,1);//删除数组中从索引为j的数字开始的1位数,因为这里只删一个数字,所以其实就是把从索引为j的数字给删除了,而这个索引为j的数字正是那个和str相同的数字。
            }
        }
    arr.push( str);
}
document.write(arr);
    如此运行一下,我们会发现,显示出来的数字个数经常不是我们要的5个,因为for(i=0;i<5;i++)次数5是确定的,每出现一次重复的数字,我们将它删掉之后,总的数字个数便会少1,这就是导致问题的原因,因此我们可以在删除数字的代码之后加上'i--',也就是每删一个重复数字就让'for(i=0;i<5;i++)'这个for循环的次数增加一次,保证了要的数字个数不会到最后少了。

最终的代码:

var str='';
var arr=[];
for(i=0;i<5;i++){
    str = Math.round( Math.random()*10 );
    for(j=0;j<arr.length;j++){
            if(arr[j]==str){
                arr.splice(j,1);
                i--;
            }
        }
    arr.push( str);
}
document.write(arr);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值