从 1-15中,随机出来5个数,不能重复的

第一种方法,用零覆盖法

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]);
		



  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值