• 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)了。

      

  • 相关阅读:
    C/S 与 B/S 区别
    XE2的一些新东西
    Versant数据库实验
    概率算法sherwood算法
    组合数学引论部分习题答案
    概率算法n皇后的LV算法
    概率算法Las Vegas
    小型企业库存管理系统的设计与实现
    概率算法Numerical和Monte Carlo
    我的彩票梦十一运夺金模拟程序
  • 原文地址:https://www.cnblogs.com/myseries/p/5204502.html
Copyright © 2020-2023  润新知