标签:针对 存在 利用 java学习 highlight util 工具包 重复 div
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范围内的不重复随机数。
标签:针对 存在 利用 java学习 highlight util 工具包 重复 div
原文地址:http://www.cnblogs.com/doucunkai/p/java.html