zoukankan      html  css  js  c++  java
  • java 产生随机数的方法

    有三种方法:

    1. Math.random():这个方法返回一个[0.0, 1.0)的一个随机double型数。它实际是调用Random类的nextDouble()方法。只不过Math类使用的是一个静态随机数生成器(即new Random()),是线程安全的一个方法,所以多个线程共用一个随机数生成器。如果很多线程都在频繁的使用随机数生成器,那么还是为每个线程分配一个随机数生成器比较好。此外在J2ME中好像不支持这个方法。
    2. Random类:java提供的强大的伪随机数生成器。有两个构造方法和主要的六类获取随机数的方法。
      1. 两个构造方法:
        1. Random():使用的是系统时间(System.nanoTime(),纳秒级)作为种子,这种随机数生成器生成的随机数总是不同的
        2. Random(long seed):使用特定的种子,如果两个随机数生成器的种子相同,以相同的顺序调用相同的方法,它们返回的随机数是一样的。(说白了,伪随机数也就是给定一个初值,然后按照一个算式,计算下一个值,下一个值。所以一旦种子确定了,那么所有的随机数序列其实都是确定的。所以叫伪随机数。在线扑克有时会作弊,就是通过与服务器系统时钟同步,从而获得相同的时钟种子,进而就可以确定它的随机数序列,也就可以知道所有的牌了)
      2. 六类获取随机数的方法:nextInt(), nextDouble(), nextLong(), nextBoolean(), nextFloat(), nextGaussian()。当然nextInt额外提供了限界的方法,都可以通过nextInt()实现,就不说啦~
    3. System.currentTimeMillis: 这返回的是从1970年1月1号0时0分0秒到目前的一个毫秒数。可以获取这个时间之后,自己通过取模之类的获得随机数(这其实就是自己定义随机数的生成方法了,Random类就是这样做的)。当然,上述第二种Random构造法可以以这个时间作为种子,那么每次返回的随机数也就不同了,因为调用的时间肯定不同。

     

  • 相关阅读:
    开源介绍:Google Guava、Google Guice、Joda-Time
    Java开发必用的工具包
    GitHub vs GitLab:它们有什么区别?
    ELK简单使用
    Sublime Text 2 快捷键大全
    跨域iframe高度自适应(兼容IE/FF/OP/Chrome)
    关于jQuery新的事件绑定机制on()的使用技巧
    指尖上的正则表达式–入门篇
    淘宝商城文本输入框效果模仿
    纯CSS打造Flow-Steps导航
  • 原文地址:https://www.cnblogs.com/hf-cherish/p/4826754.html
Copyright © 2011-2022 走看看