既然是随机,就必然会用到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循环:
1
2
3
4
var str='';
var arr=[];
for(i=0;i<5;i++){
str = Math.round( Math.random()*10 );
arr.push(str);//把str添加到数组arr中
}
document.write(arr);
1
2
3
4
5
6
7
这样数组arr里面便储存了产生的5个0到10之间的随机数,我们运行一下发现里面可能会有重复的数字。因此接下来我们的重头戏是去重复数字:
1
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);
1
2
3
4
5
6
7
8
9
10
11
12
13
如此运行一下,我们会发现,显示出来的数字个数经常不是我们要的5个,因为for(i=0;i<5;i++)次数5是确定的,每出现一次重复的数字,我们将它删掉之后,总的数字个数便会少1,这就是导致问题的原因,因此我们可以在删除数字的代码之后加上'i--',也就是每删一个重复数字就让'for(i=0;i<5;i++)'这个for循环的次数增加一次,保证了要的数字个数不会到最后少了。
1
最终的代码:
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);
随机产生五个从0到10不重复的数
最新推荐文章于 2023-07-23 23:21:00 发布