zoukankan      html  css  js  c++  java
  • java中的随机数Random

    java中一般有两种随机数,一个是Math中random()方法,一个是Random类。

    一、Math.random()  :     随即生成0<x<1的小数

      实例:如何写,生成随机生成出0~100中的其中一个数呢?

          Math.random()返回的只是从0到1之间的小数,如果要50到100,就先放大50倍,即0到50之间,这里还是小数,如果要整数,就强制转换int,然后再加上50      即为50~100.
         最终代码:(int)(Math.random()*50) + 50

    二、Random类

        Random random = new Random();//默认构造方法

        Random random = new Random(1000);//指定种子数字

    在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也完全相同,举例:

    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()); 
    
    // 两次输出的结果是一样的。

    事实上,Random是一种伪随机数,相同的种子产生相同的序列

    Random类的常用方法:

    (1) public boolean nextBoolean() 

      该方法的作用是生成一个随机的boolean值,生成true和false的值几率相等,也就是都是50%的几率

    (2) public double nextDouble()

      该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间,这里中括号代表包含区间端点,小括号代表不包含区间端点,也就是0到1之间的随机小数,包含0而不包含1.0

    (3) public int nextInt()

      该方法的作用是生成一个随机的int值,该值介于int的区间,也就是-2的31次方到2的31次方-1之间

    (4) public int nextInt(int n)

      该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n

    (5) public void setSeed(long seed)

      该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出的Random对象相同。每次的Seed不同,random就不同了。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。要了解Seed的作用,得先了解随机数原理。

    Random类的使用实例: 使用Random类,一般是生成指定区间的随机数字,下面就一一介绍如何生成对应区间的随机数字

      Random r = new Random();

      1) 生成[0,1.0)区间的小数:    double d1 = r.nextDouble();

      2) 生成[0,5.0)区间的小数:     double d2 = r.nextDouble() * 5;

      3) 生成[1,2.5)区间的小数 [n1,n2]:   double d3 = r.nextDouble() * 1.5 + 1;【也就是 r.nextDouble() * (n2-n1)+n1】

    生成[1,2.5)区间的随机小数,则只需要首先生成[0,1.5)区间的随机数字,然后将生成的随机数区间加1即可。

    同理,生成任意非从0开始的小数区间[d1,d2)范围的随机数字(其中d1不等于0),则只需要首先生成[0,d2-d1)区间的随机数字,然后将生成的随机数字区间加上d1即可。

      4) 生成[0,10)区间的整数:  int n2 = r.nextInt(10);  

       也可以使用这个方法 int  n3 = Math.abs(r.nextInt() % 10);  这种方法首先调用nextInt()方法生成一个任意的int数字,该数字和10取余以后生成的数字区间为(-10,10),因为按照数学上的规定余数的绝对值小于除数,然后再对该区间求绝对值,则得到的区间就是[0,10)了。

      

  • 相关阅读:
    Python基础——for/while循环
    Python基础——条件判断
    Python基础——字符串
    Python基础——输出[print()]与输入[input()]
    Python编程软件的安装与使用——Windows、Linux和Mac
    Python数据结构之三——dict(字典)
    微信【跳一跳】 opencv视觉识别 + 物理外挂
    tensorflow安装: win10 + RTX2060 + tensorflow1.15.0+ cuda10.0 + VScode
    FreeRTOS 任务与调度器(2)
    FreeRTOS 任务与调度器(1)
  • 原文地址:https://www.cnblogs.com/myseries/p/5204502.html
Copyright © 2011-2022 走看看