第一种方法,用零覆盖法
int [] nums={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
for(int i=0;i<5;i++)
{ int index=(int)(Math.ramdom()*15);
int num=nums[index];
if(num==0)
{
i--;
continue;
}else
{
System.out.println(num);
nums[index]=0;
}
}
int[] nums={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15};
int[] result=new int[5];
//i代表准备存在结果result数组中的下标位置
for(int i=0;i<result.length;i++){
//先随机出nums数组中的下标0-14,
int indexOfNums=(int)(Math.random()*15);
//然后通过随机出的下标,获取相关位置上的值
int num=nums[indexOfNums];
//判断获取的值是否为0,如果为0,则代表已经被取出,则这次操作无效(还要停留在这次),还必须重新随机取球
if(num==0){
//还要停留在这次
i--;//和i++中和了,则i没有变化,还停留在这次
continue;//continue会做的i++,就会进入下一次,本次循环余下的代码不会完成
}
//if不成立,自然会做到以下代码
//不等于0,就代表是可用的数字
System.out.println(num);
//把取出的数,存到结果数组对应的下标位置上
result[i]=num;
//同时取出,把nums中对应位置上的值设置为0
nums[indexOfNums]=0;
}
第二种方法,随机化数组中的元素,若重复,则重新随机化
//创建数组并声明,new初始化数组
int[] nums=new int[5];
nums[0]=(int)(Math.random()*15);
for(int i=1;i<5;i++)
{
nums[i]=(int)(Math.random()*15+1);
for(int j=0;j<i;j++)
{
while(nums[i]==nums[j])
{ //如果重复了,就重新取数
i--;
}
}
}
for(int k=0;k<5;k++)
System.out.println(nums[k]);