调用这个math . random()函数能够返回带正号的双值,该值大于等于0.0且小于1.0,即取值范围是(0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。例子如下:
IO包; 进口java.util.Random; 公开课TestRandom { 公共静态void main (String [] args) {//案例1 System.out.println (" math . random ()=" + math . random());//结果是个两类型的值,区间为[0.0,1.0) int num=(int) (math . random () * 3);//注意不要写成(int) math . random() * 3,这个结果为0,因为先执行了强制转换 系统。println (num " num=" +);/* * *输出结果为: * * math . random ()=0.02909671613289655 * num=0 * */} }
下面随机()的两种构造方法:
,随机():创建一个新的随机数生成器。
,随机种子(长):使用单个长种子创建一个新的随机数生成器。
我们可以在构造随机对象的时候指定种子(这里指定种子有何作用,请接着往下看),如:随机r1=新的随机(20);
或者默认当前系统时间的毫秒数作为种子数:随机r1=new随机();
需要说明的是:你在创建一个随机的对象的时候可以给定任意一个合法的种子数,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。如下面的Java代码:
随机兰德=new随机(25); int我; i=rand.nextInt(100)。>之前初始化时25并没有起直接作用(注意:不是没有起作用),rand.nextInt(100);中100年的是随机数的上限,产生的随机数为0 - 100的整数,不包括100。
具体用法如下例:
IO包; 进口java.util.ArrayList; 进口java.util.Random; 公开课TestRandom { 公共静态void main (String [] args) {//案例2//对于种子相同的随机对象,生成的随机数序列是一样的。 随机ran1=新的随机(10); System.out.println(“使用种子为10的随机对象生成[0,10)内随机整数序列:”); for (int i=0;我& lt;10;我+ +){ System.out.print (ran1.nextInt (10) + " "); } System.out.println (); 随机ran2=新的随机(10); System.out.println(“使用另一个种子为10的随机对象生成[0,10)内随机整数序列:”); for (int i=0;我& lt;10;我+ +){ System.out.print (ran2.nextInt (10) + " "); }/* * *输出结果为: * *使用种子为10的随机对象生成[0,10)内随机整数序列: * 3 0 3 0 6 6 7 8 1 4 *使用另一个种子为10的随机对象生成[0,10)内随机整数序列: * 3 0 3 0 6 6 7 8 1 4 * *///案例3//在没带参数构造函数生成的随机对象的种子缺省是当前系统时间的毫秒数。 随机随机r3=new (); System.out.println (); System.out.println(“使用种子缺省是当前系统时间的毫秒数的随机对象生成[0,10)内随机整数序列”); for (int i=0;我& lt;10;我+ +){ System.out.print (r3.nextInt (10) + " "); }/* * *输出结果为: * *使用种子缺省是当前系统时间的毫秒数的随机对象生成[0,10)内随机整数序列 * 1 1 0 4 4 2 3 8 8 4 * *///另外,直接使用随机无法避免生成重复的数字,如果需要生成不重复的随机数序列,需要借助数组和集合类 ArrayList列表=new TestRandom () .getDiffNO (10); System.out.println (); System.out.println(“产生的n个不同的随机数:”+列表); }/* * *生成n个不同的随机数,且随机数区间为[0,10) * @param n * @return */公共ArrayList getDiffNO (int n) {//生成[低氮)个不重复的随机数//用列表来保存这些随机数 ArrayList列表=new ArrayList (); 随机兰德=new随机(); 布尔[]bool=新布尔[n]; int num=0; for (int i=0;我& lt;n;我+ +){ {做//如果产生的数相同继续循环 num=rand.nextInt (n); }(布尔值(num)); bool (num)=true; list.add (num); } 返回列表; } }
1。保护int 下一个(int比特):生成下一个伪随机数。
2. boolean nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的布尔值。
3. void nextBytes (byte[]字节):生成随机字节并将其置于用户提供的字节数组中。
4. double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的,在0.0和1.0之间均匀分布的双值。
Java中随机简介_动力节点Java学院整理