`
alfredgao
  • 浏览: 135797 次
  • 性别: 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()),则产生的随机数也相同。
分享到:
评论

相关推荐

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

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

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

    Java实用工具类库中的类java.util.Random提供了产生各种类型随机数的方法,下面这篇文章主要给大家介绍了关于java.util.Random实现原理的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下。

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

    下面小编就为大家带来一篇浅谈java中Math.random()与java.util.random()的区别。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java.util包

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

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

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

    java.util.Random与Math.random区别

    绍java.util.Random与Math.random区别

    实用工具类库java.util

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

    Java课程设计-老鼠走迷宫

    import java.util.Random; import java.util.Scanner; /** * 使用递归分割绘制迷宫 * * @author WangSong * * @Time 2020-6-22 */ abstract class Arithmetic { /** 路表示为1 */ public final int ROUND ...

    java随机数

    1.Math.floor(Math.random() * 11) 幸运的是,如果我们使用java.util.Random或java.util.concurrent.ThreadLocalRandom就不用担心上述问题了。 Java实战项目里面介绍了一些不正确使用java.util.Random API的危害。...

    斗地主自动发牌

    使用JAVAScript实现模仿斗地主发牌程序,使用公司... Authorized use random function in Java. Java. Util. Random (), through the cycle than to remove duplicate Random value. Redundancy is too big, I'm sorry.

    JSON序列化与反序列化JAVA工具

    java.util.Random d1 = new java.util.Random(); java.util.UUID d2; int ji_i; long ji起始时间_i; long ji截至时间_i; java.util.Date date = new java.util.Date(); //生成1万个序列化後的文本 for (ji_...

    Java设计二次元动漫人物演出活动小游戏代码.docx

    import java.util.Random; import java.util.Scanner; public class AnimeShowGame { // 声明全局变量 private static ArrayList&lt;String&gt; characters = new ArrayList(); private static ArrayList&lt;String&gt; ...

    Java.util包简介并教您如何开发应用之二

    例如,Java提供日期(Data)类、日历(Calendar)类来产生和获取日期及时间,提供随机数(Random)类产生各种类型的随机数,还提供了堆栈(Stack)、向量(Vector)、位集合(Bitset)以及哈希表(Hashtable)等类来表示相应的数据...

    JSON序列化及反序列化工具

    java.util.Random d1 = new java.util.Random(); java.util.UUID d2; int ji_i; long ji起始时间_i; long ji截至时间_i; java.util.Date date = new java.util.Date(); //生成1万个序列化後的文本 for (ji_...

    Jafaran:java.util.Random的快速,随机的实现。-开源

    Jafaran(Java快速随机)提供了Java.util.Random的快速(对于更多随机性)实现,以及其他nextXXX()方法以及用于检索和恢复状态的方法。 如果实现名称是线程安全和非阻塞的,则实现名称包含“ Conc”(用于并发),...

    Java标准包中基本常用类和方法.docx

    * java.util.Random:随机数生成器类,提供了随机数的生成方法。 * java.util.Timer:定时器类,提供了定时任务的执行方法。 二、String 类 String 类是 Java 语言中最基本的类之一,提供了字符串的处理方法。常用...

    java 随机数.docx

    在Java中,生成随机数可以使用java.util.Random类或java.util.concurrent.ThreadLocalRandom类。这两个类提供了生成伪随机数的方法,下面是它们的详细介绍: 使用java.util.Random类生成随机数: 创建Random类的...

    debugtest.java

    import java.util.Random;; public class DebugTest{ private List list=new ArrayList(); public void doMain() { Random r=new Random(); for(int i=0;i;i++) { int nextInt=r.nextInt(); list.add(new...

    Java常用包介绍.pdf

    java.util 包是Java语言中的实用工具类库,提供了一些低级的实用工具,如数据结构类、日期类、随机数类、属性类、观测类和异常类等。 java.util 包中的类有: * Date:日期类,提供了日期处理的方法。 * Calendar...

    java中随机函数的使用.doc

    Java 中随机函数可以分为两种:一种是使用 Math.random() 方法生成随机数,另一种是使用 java.util.Random 类生成随机数。 1. 使用 Math.random() 方法生成随机数 Math.random() 方法可以生成一个双精度浮点数,该...

Global site tag (gtag.js) - Google Analytics