Java 随机数相关

 Java随机生成数字的方法

1、创建Random类型的对象:

Random random = new Random();

Random random = new Random(10010010);

以上两种是创建Random对象的方式,第一种使用默认构造方法,和以下的代码作用完全等价:

Random random = new Random(System. currentTimeMillis());

相当与使用当前时间作为种子数字来进行创建。

第二种方式通过自己来指定种子数字来进行创建。

大家可以根据需要使用以上两种方式的任一种。

 

2、生成随机数字:

创建好了随机对象以后,我们就可以来生成随机数字了:

生成随机整数:

int k = random.nextInt();

生成随机长整数:

long l = random.nextLong();

3、生成指定范围的数字:

例如生成0-10之间的随机数字:

 int k = random.nextInt();

int j = Math.abs(k % 10);

首先生成一个随机整数k,然后用k和10取余,最后使用Math类的abs方法取绝对值,获得0-10之间的随机数字。

 

获得0-15之间的随机数,类似:

int k = random.nextInt();

int j = Math.abs(k % 15);

获得10-20之间的随机数字:

int k = random.nextInt();

int j = Math.abs(k % 10) + 10;

java生成无重复随机数的2种方法

第一种方法,在一个待选数组中随机产生一个数,然后把他放到待选数组的最后,然后从length-1里随机产生下一个随机数,如此类推

 

public   static   int [] randoms()
{
Random r 
= new Random();

int temp1,temp2;
int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};
int len = send.length;
int returnValue[] = new int[22];
for(int i=0;i<22;i++)
{
temp1 
= Math.abs(r.nextInt())% len;
returnValue[i] 
= send[temp1];
temp2 
= send[temp1];
send[temp1] 
= send[len-1];
send[len
-1= temp2;
len
--;
}

return returnValue;
}

}


方法二:还是一个固定的无重复的数组,然后把这个数组随机调换位置,多次之后这个数组就是一个无重复的随机数组了。

 

public   static   int [] random2()
 
{
  
int send[] = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21};
  
int temp1,temp2,temp3;
  Random r 
= new Random();
  
for(int i=0;i<send.length;i++//随机交换send.length次
  {
   temp1 
= Math.abs(r.nextInt())%(send.length-1); //随机产生一个位置
   temp2 = Math.abs(r.nextInt())%(send.length-1); //随机产生另一个位置
   if(temp1 != temp2)
   
{
    temp3 
= send[temp1];
    send[temp1] 
= send[temp2];
    send[temp2] 
= temp3;
   }

  }

  
return send;
 }


 

产生随机数的方法

产生10个0-100之间不重复的随机数


List   list    =     new    ArrayList();   
java.util.Random   random   
=     new    java.util.Random();   

while    (list.size()    <     11 )    {   
    Integer   ii   
=   new   Integer(random.nextInt(100));   
    
if   (!list.contains(ii))   {   
        list.add(ii);   
    }
   
    System.out.println(
"-----"   +   list.toString());
}

 

产生10个1-100之间不重复的随机数

List   list    =     new    ArrayList();   
java.util.Random   random   
=     new    java.util.Random();   

while    (list.size()    <     11 )    {   
    Integer   ii   
=   new   Integer(random.nextInt(99)+1);   
    
if   (!list.contains(ii))   {   
        list.add(ii);   
    }
   
    System.out.println(
"-----"   +   list.toString());
}



  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值