实例讲解Java中random.nextInt()与math . random()的基础用法

  

<强> 1,来源

  

random.nextInt()为java.util。随机类中的方法;
  

  

math . random()为. lang。数学类中的静态方法。

  

<强> 2,用法

  

产生低氮的伪随机数(伪随机数参看最后注解):

     //两种生成对象方式:带种子和不带种子(两种方式的区别见注解)   随机随机=new随机();   整数res=random.nextInt (n),            整数res=(int) (math . random () * n);      

<强> 3,jdk源码

     //random.nextInt (n)   公共int nextInt (int n) {   如果(n & lt;=0)   把新IllegalArgumentException(必须积极“n”);   如果(n,- n)==n)//?n是2的幂   返回(int) ((n *(长)下(31))在祝辞31日);   整数位,val;   {做   位=下一个(31);   val=% n比特;   },(比特- val + (n - 1) & lt;0);   返回val;   }         //math . random ()   公共静态双重随机(){   随机rnd=randomNumberGenerator;//第一次调用,生成一个随机数生成器   如果(rnd==null) rnd=initRNG ();   返回rnd.nextDouble ();   }//生成的方法为同步的,线程安全   私有静态同步随机initRNG () {   随机rnd=randomNumberGenerator;   返回(rnd==null) & # 63;(随机randomNumberGenerator=new()):研发;   }//该方法为随机类中的方法   公共双nextDouble () {   返回(((长)(下一个(26))& lt; & lt;27)+ (27))/(双)(1 l & lt; & lt;53);   }      

<强> 4,小结

  
      <李> math . Random()方法生成(0,1)范围内的两类型随机数;随机类中的nextXxxx系列方法生成低氮的随机数;李   <李> math . random()线程安全、多线程环境能被调用;李   <李>如无特殊需求,则使用(int) (math . random () * n)的方式生成随机数即可。   
  

<强> 5,注:何谓伪随机数

  

伪随机既有规则的随机,随机类中的随机算法就是伪随机。

  

具体表现为:相同种子数的随机对象生成的随机数序列相同:

        @Test   公共空间createProjectNo () {   随机r1=new随机(100);   随机r2=new随机(100);   for (int i=0;我& lt;100;我+ +){   System.out.println (r1.nextInt (10) +”、“+ r2.nextInt (10));   }   }      

结果为:

  

实例讲解Java中random.nextInt()与math . random()的基础用法

  

如不想生成相同的随机数序列,则应只使用一个随机类。而数学类中的随机数生成器randomNumberGenerator对象为静态的,可考虑使用。

  

<强> 6,注:随机类的两种构造方法区别

  

1,源码

        公共随机(){   这(seedUniquifier () ^ system . nanotime ());   }   公共随机(种子){   如果(getClass ()==Random.class)   这一点。种子=new AtomicLong (initialScramble(种子));   其他{//子类重载setSeed   这一点。种子=new AtomicLong ();   setSeed(种子);   }   }      

2区别

  

从源码中可以看的到,未定义种子的构造方法里,使用当前系统时间相关的一个数字作为种子数,该种子数只作为随机算法的起源数字,与生成的随机数区间无关系。

  

这篇文章是我对Java中随机数的一些简单的理解,如有不对的地方或者其他的见解欢迎指导。

  

<强>总结

  

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。如果你想了解更多相关内容请查看下面相关链接

实例讲解Java中random.nextInt()与math . random()的基础用法