`
alfredgao
  • 浏览: 138821 次
  • 性别: Icon_minigender_1
  • 来自: 青岛
社区版块
存档分类
最新评论

java.util.Random 分析

    博客分类:
  • J2se
阅读更多
Random()构造函数 有两种:
 
其一:Random()
       创建一个新的随机数生成器。它是以当前时间的毫秒数,为种子。可以通过System.currentTimeMillis()来获得当前时间的毫秒数
其二:Random(long seed)
       使用单个 long 种子创建一个新随机数生成器.
       如果用相同的种子创建两个 Random 实例,则对每个实例进行相同的方法调用序列,它们将生成并返回相同的数字序列。
测试一:使用不带参数的构造方法.
       测试1:nextInt(); 返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
       public static void main(String[] args) {
              // TODO Auto-generated method stub
              java.util.Random r=new java.util.Random();
 
            for(int i=0;i<10;i++){
 
                System.out.println(r.nextInt());
 
            }
 
       }
       控制台打印:
       -864316554
       -2077454005
       293730977
       -1743870413
       -1424715784
       486969960
       -988141949
       -1930205453
       1550615431
       -1436965049
       测试2:nextInt(int n); 返回一个伪随机数,它是从此随机数生成器的序列中取出的、在 0(包括)和指定值(不包括)之间均匀分布的 int值。
       public static void main(String[] args) {
              // TODO Auto-generated method stub
              java.util.Random r=new java.util.Random();
 
            for(int i=0;i<6;i++){
                System.out.println(r.nextInt(7));
            }
       }
       4
       4
       2
       2
       0
       2
       问题:包含重复的数值
      所以,在一定的取值范围内,如何将重复的数值去掉?
      方法一:如果网页的访问频率(时间较短)较高,而又用以当前时间的毫秒数为种子,则可以使用
           try {Thread.sleep(2);} catch(Exception e) {}
      方法二:使用Set集合,过滤掉重复的记录
      List searchList = getSearchList();
      Set set = new HashSet();
      Random random = new Random();
      while (set.size() < 6 {
           set.add(searchList(random.nextInt(listSize)));
      }
      思路:从一个集合中随机产生6个不重复的记录并显示出来。
      
测试二:使用带参数的构造方法.
       Random random = new Random(7);
       for (int i=0;i<6;i++) {
              System.out.println(i+":"+random.nextInt());
       }
       0:-1156638823
       1:-1552468968
       2:-1077308326
       3:41356089
       4:1495978761
       5:2107132509
       总结:所以,如果用构造一个指定种子的Random,则,
           如果所指定的种子相同(本例为7),且调用的方法相同(本例为random.nextInt()),则产生的随机数也相同。
分享到:
评论

相关推荐

    java.util包

    Java提供日期(Data)类、日历(Calendar)类,随机数(Random)类,堆栈(Stack)、向量(Vector) 、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据结构

    java.util.pdf

    标题“java.util.pdf”暗示这是一个关于Java编程语言中util包的文档。由于描述和标签均重复标题,我们可以推断文档重点在于解释和示例展示java.util包中的类与接口。java.util是Java的标准库中的一个包,主要用于...

    Java.util包.docx

    Java.util包是Java标准库中的核心包之一,包含了许多用于处理集合、数组、日期时间、随机数等的类。在本文件中,我们主要关注Java.util.ArrayList类,这是一个常用的动态数组实现,它提供了灵活的大小调整和高效的...

    java.util包总结

    Java.util包是Java标准库中的核心包之一,它包含了大量用于日常编程的工具类和接口。这个包在Java 2版本中得到了显著增强,引入了许多重要的数据结构和算法,为Java程序员提供了更丰富的功能。 首先,Java.util包中...

    Java8中的java.util.Random类文章代码

    Java8中的java.util.Random类 文章代码,不多解释啦,不需要你安装其它的jar包。

    浅谈java中Math.random()与java.util.random()的区别

    在性能方面,`Math.random()` 通常被认为比 `Random.nextInt()` 快,因为它不需要创建对象。然而,对于大多数应用来说,这种差异可能微不足道,除非你在生成大量随机数时特别关注性能。 总的来说,如果你需要简单...

    java.util包源码pdf版

    ### Java.util包源码知识点概览 #### 一、Overview `java.util`包是Java标准库中的一个重要组成部分,提供了大量的实用工具类和接口来处理集合数据类型、日期时间操作、随机数生成等功能。这份PDF文档包含了`java....

    java.util.Random与Math.random区别

    java.util.Random与Math.random的区别 java.util.Random和Math.random都是Java语言中用于生成随机数的方法,但是它们之间存在着一些重要的区别。 Math.random()方法 Math.random()方法是Java.lang.Math类中的一个...

    关于java.util.Random的实现原理详解

    在Java编程语言中,`java.util.Random` 类是生成伪随机数的核心工具。这个类提供了多种生成不同类型随机数的方法,包括整数(int、long)、浮点数(float、double)以及高斯分布(Gaussian)随机数。与 `java.lang....

    java.util包介绍.pdf

    ### Java.util包详解 #### 一、概述 `java.util`包是Java Standard Edition (Java SE)的一个核心组件,提供了大量的实用工具类和接口,帮助开发者处理常见的编程任务,如数据存储、日期时间操作、随机数生成等。该...

    java的.awt包和java.util包的区别

    ### Java的.awt包和.java.util包的区别 #### Java.util包详解 Java.util包是一个非常重要的标准库之一,其中包含了大量有用的类和接口,为开发者提供了丰富的功能。此包中的类和接口可以分为以下几大类别: 1. **...

    JBuider第七章:Java.util包.rar

    Java.util包是Java编程语言中的核心包之一,它包含了大量用于日常编程的类和接口,是Java程序员必备的知识点。本教程重点讲解了Java.util包中的主要组件和使用方法,旨在帮助初学者深入理解并熟练运用这个包。 1. *...

    java.util 包 是Java中很大的一个集合

    运用下列类进行JAVA编程: Date Calendar Random 使用 Collection 接口及其实现类 ArrayList LinkedList 使用 HashMap 使用Vector 等方法的使用

    实用工具类库java.util

    介绍Java的实用工具类库java.util包。在这个包中,Java提供了一些实用的方法和数据结构。例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供...

    java_util 工具包

    ### Java_util 工具包详解 #### 一、引言 `java.util`包作为Java标准库中的一个重要组成部分,提供了大量的实用工具类和接口,旨在简化开发者在处理数据结构、日期时间、事件处理等方面的工作。这个包包含了如日期...

    java随机数

    Java提供两种主要的方式来生成随机数:`java.lang.Math.random()` 和 `java.util.Random` 类。这两种方法各有优劣,适用于不同的场景。 #### Math.random() `Math.random()` 是一个简单易用的方法,用于生成一个...

    java.util源码-java-util:javautil源代码

    6. **随机数生成**:`java.util.Random`类用于生成随机数,广泛应用于模拟和测试场景。 7. **实用工具类**:`java.util.Arrays`和`java.util.Collections`提供静态方法,用于操作数组和集合,如排序、复制和填充。 ...

    28个java常用的工具类

    18. **`java.util.Random`**: 生成随机数。 19. **`java.util.Comparator`**: 定义自定义排序规则。 20. **`java.util.stream.*`** (Java 8+): 流式处理API,支持函数式编程。 21. **`java.util.concurrent....

    30个常用java工具类

    5. **`java.util.Random`**:生成随机数,适用于各种随机算法或模拟场景。 6. **`java.io.*`** 包:包含大量工具类,用于输入/输出操作,如`FileReader`、`BufferedReader`、`PrintWriter`等。 7. **`java.util....

Global site tag (gtag.js) - Google Analytics