zoukankan      html  css  js  c++  java
  • random函数详解

    1. 随机函数  Math.random()
      Math.random();    取值范围是  [ 0.0,1.0 )  的左闭右开区间。具体源代码如下所示:
      
      
     
      Math.random()是生成0~1之间的小数(double类型的),类似生成的结果如下图所示:
         
         最上面的两个图贴出来的是Math.random()的源代码,当我们开始直接使用Math.random()的时候,发现进入会判断random是否为空,如果为空则创建一个Random对象否则直接通过这个random生成一个0 ~ 1 之间的double类型小数。应用案例:
      
     
    2. 随机函数  java.util.Random()

     下面Random()的两种构造方法:

       Random():创建一个新的随机数生成器。

       Random(long seed):使用单个 long 种子创建一个新的随机数生成器。

     我们可以在构造Random对象的时候指定种子,如:Random r1 = new Random(20);或者默认当前系统时间的毫秒数作为种子数:Random r1 = new Random();

    具体随机种子源代码如下:

      

      需要说明的是:你在创建一个Random对象的时候可以给定任意一个合法的种子数,种子数只是随机算法的起源数字,和生成的随机数的区间没有任何关系。如下面的Java代码:

      

      初始化时25并没有起直接作用(注意:不是没有起作用),rand.nextInt(100);中的100是随机数的上限,产生的随机数为0-100的整数,不包括100 --> [0 , 100)

         课外引入:
            产生随机数函数以及线程池中的一些函数使用的都是System.nanoTime,System.nanoTime提供相对精确的计时,但是不能用他来计算当前日期。此方法只能用于测量已过的时间,与系统或钟表时间的其他任何时间概念无关。返回值表示从某一固定但任意的时间算起的毫微秒数
     
    具体不同案例对比如下:
    <1. 种子相同的随机数
      
    <2. 缺省参数的随机数
        
     
     
  • 相关阅读:
    Linux目录规范和含义(转)
    一个mq崩溃的线上问题
    砥砺前行_二零二一年年终总结
    https://gitscm.com/book/zh/v2服务器上的 Git 配置服务器
    TCGA 数据下载分析利器 —— TCGAbiolinks(二)临床数据下载
    tidyverse
    ActiveX关于“此网页需要运行以下加载项:"xxx" 的 "xxx" ” 是否允许的询问
    Vista/Win7以上系统查看和清除本地DNS缓存新方法
    Delphi 动态数组另类笔记
    Delphi 开发ActiveX控件(非ActiveForm)
  • 原文地址:https://www.cnblogs.com/liang1101/p/6278365.html
Copyright © 2011-2022 走看看