java学习日记 随机数

1.随机数的生成

第一种方式:运用工具包java.lang.util.Random来生成

private static void suiji()
    {
        Random r=new Random();
        int ival;
        for(int i=0;i<10;i++)
        {
            ival=r.nextInt(50);
            System.out.println(ival);
        }
    }

代码的意思是:生成0-50随机数,存在重复的。

第二种方式:用math类下的

private static void suiji2()
    {
        double dval;
        long lval;
        int ival;
        for(int i=0;i<10;i++)
        {
            dval=Math.random()*100;
            //1.用math函数四舍五入
            //ival=Math.round(dval);
            //2.用类型强制转换,将double转换成int
            ival=(int)Math.round(dval);
            System.out.println(ival);
        }
    }

代码采用 math提供的方法random获取0-1之间浮点数。然后乘以多少 获取相应范围内数,比如100,则小数点右移两位,获取0-100之间的数,但是获取的是浮点数,带有小数,然后用四舍五入函数 round或者int强制类型转换获取整数,但也是含有重复的数。

第三种:则是利用UUID码的生成:

private static void suiji3()
    {
        for(int i=0;i<10;i++)
        {
            String uuid=UUID.randomUUID().toString();
            System.out.println(uuid);
        }
    }

代码生成永不重复uuid码。

我们现在针对前两个实现生成不重复的随机数。

 

private static void suiji4(int n,int m)
	{
		Integer arr[]=new Integer[n];
		Random r=new Random();
		
		int index=0;
		int ival;
		while(true)
		{
			boolean tag=false;
			ival=r.nextInt(m);
			for(int i=0;i<index;i++)
			{	
				if(arr[i] == ival)
				{
					tag=true;
					break;
				}
			}
			if(!tag)
			{
				arr[index++]=ival;
			}
			if(index == n)
			{
				break;
			}
		}
		Arrays.sort(arr);
		for(int a:arr)
		{
			System.out.println(a);	
		}
		
	}

  利用一个标记位 Boolean tag 来实现判断该数组是否含有刚生成的随机数,没有则添加进数组,有则从新生成,传递两个参数 ,打印n个m范围内的不重复随机数。

posted @ 2017-08-23 18:56  窦光大大存大大凯  阅读(147)  评论(0编辑  收藏  举报