关于 取 多个随机数的不重复问题

//随机数生成函数带参数n
	public static String ranDom(int n)
	{
		Random num=new Random();
		String strnum="";
		for(int i=0;i<n;i++)
		{
			String outnum="";
			switch(num.nextInt(3))//随机生成数在switch里面再随机生成数字字母
			{
				case 0:outnum=outnum+num.nextInt(10);break;
				case 1:outnum=outnum+(char)(Math.random()*26+'A');break;
				case 2:outnum=outnum+(char)(Math.random()*26+'a');break;
			}
			strnum=strnum+outnum;
		}
		return strnum;
	}

在随机产生一个范围是数字,小写字母,还是大写字母

public static String shujiOne(){
		Random num=new Random();
		String outnum="";
		while(outnum.length()<4){
			int A=num.nextInt(10);
			String S=""+A;
			while(outnum.contains(S)){
				A=num.nextInt(10);//包含这个数时则重新产生一个随机数
				S=""+A;
			}
			outnum=outnum+A;
		}
		return outnum;
	}	

在随机产生一个0-9数字,不重复

public static String shujiTwo(){
		Random num=new Random();
		boolean fla=true;//重复为true
		int[] s1=new int[4];
		while(fla){
			for(int i=0;i<4;i++){
			s1[i]=num.nextInt(10);
			}
			for(int i=0;i<4;i++){
				int temp=s1[i];
				int count=0;
				for(int j=0;j<4;j++){
					int temp2=s1[j];
					if(temp==temp2){
						count++;
					}
				}
				if(count>=2)//自身比较了一次
					fla=true;
				else
					fla=false;
			}
		}
		return String.format("%d%d%d%d",s1[0],s1[1],s1[2],s1[3]);
	}

下面是利用集合的不能重复性实现,hashSet实现,好像也能用treeSet-------查查帮助文档吧,不懂的

import java.util.*;

public class home06101 {
	public static void main(String[] args){
		
		Random ra=new Random();
		HashSet<Integer> num=new HashSet<Integer>();
		while(num.size()<4){//竟然set重复的加不进去,小于四即可
			num.add(ra.nextInt(10));
		}
		//System.out.print(num);
		Iterator<Integer> it=num.iterator();	//迭代输出	
		while (it.hasNext()) {
				System.out.print(it.next());
		}
	}
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值