黑马程序员技术交流社区

标题: Java随机数小结 [打印本页]

作者: gaoming971366    时间: 2015-7-15 11:20
标题: Java随机数小结
    在Java中,随机数的产生常用的有2中方法。第一种是使用java.util.Random类来产生一个随机数发生器;第二种是运行Math函数中的Random方法产生随机数。下面我来详细介绍一下:
    一.>第一种是使用java.util.Random生成随机数,随机数发生器(Random)对象产生以后,通过调用不同的method:nextInt()、nextLong()、nextFloat()、nextDouble()等获得不同类型随机数。
            Random random = new Random();
            random调用不同的方法,获得随机数。
            如果2个Random对象使用相同的种子(比如都是100),并且以相同的顺序调用相同的函数,那它们返回值完全相同。如下面代码中两个Random对象的输出完全相同
1>生成随机数,依据自己的需求来定义生成的类型函数
           import java.util.*;
           class TestRandom {
                 public static void main(String[] args) {
                      Random random1 = new Random(100);
                      System.out.println(random1.nextInt());
                      System.out.println(random1.nextFloat());
                      System.out.println(random1.nextBoolean());
                      Random random2 = new Random(100);
                      System.out.println(random2.nextInt());
                      System.out.println(random2.nextFloat());
                      System.out.println(random2.nextBoolean());
                 }
             }
         2>指定范围内的随机数
             import java.util.*;
                  class TestRandom {
                       public static void main(String[] args) {
                            Random random = new Random();
                            for(int i = 0; i < 10;i++) {
                                System.out.println(Math.abs(random.nextInt())%10);
                            }
                       }
                  }
        3>获取指定范围内的不重复随机数
             import java.util.*;
             class TestRandom {
                   public static void main(String[] args) {
                        int[] intRet = new int[6];
                        int intRd = 0;
                        int count = 0;
                        int flag = 0;
                        while(count<6){
                             Random rdm = new Random(System.currentTimeMillis());
                             intRd = Math.abs(rdm.nextInt())%32+1;
                             for(int i=0;i<count;i++){
                                 if(intRet[i]==intRd){
                                     flag = 1;
                                     break;
                                 }else{
                                     flag = 0;
                                 }
                             }
                             if(flag==0){
                                 intRet[count] = intRd;
                                 count++;
                             }
                    }
                   for(int t=0;t<6;t++){
                       System.out.println(t+"->"+intRet[t]);
                   }
                }
             }


  二.> 第二种就是Math函数里的Random方法,它只产生double型的随机数。类Random中的方法十分简单,它只有两个构造方法和六个普通方法。
构造方法:
(1)public Random()
(2)public Random(long seed)
普通方法:
(1)public synonronized void setSeed(long seed)
该方法是设定基值seed。
(2)public int nextInt()
该方法是产生一个整型随机数。
(3)public long nextLong()
该方法是产生一个long型随机数。
(4)public float nextFloat()
该方法是产生一个Float型随机数。
(5)public double nextDouble()
该方法是产生一个Double型随机数。
(6)public synchronized double nextGoussian()
该方法是产生一个double型的Goussian随机数。
Random random=new Random();
random.nextInt();
也可以有nextFloat等等,各种基本类型都有。Math.random也可以,比如说你想要0-10之间的随机数(int)(Math.random()*10);
     以上是介绍Java产生随机数的主要2种方法,大家在实际用到的时候我建立使用java.util.Random,因为这个工具是java开发者针对随机数开发的一个类,里面有好多功能非常好用,希望大家一起探索一起java。


作者: 824519050    时间: 2015-7-15 11:29
学习了.................
作者: gaoming971366    时间: 2015-7-15 12:20
824519050 发表于 2015-7-15 11:29
学习了.................

一起学习。。。。
作者: 牵着蜗牛去逛街    时间: 2015-7-15 12:59
学习了,有所理解。。。
作者: 落叶随尘    时间: 2015-7-15 13:55
正在学习  




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2