Random()

创建一个新的随机数生成器。

 代码如下 复制代码
Random(long seed)

使用单个 long 种子创建一个新的随机数生成器。

我们可以在构造Random对象的时候指定种子,如:

 代码如下 复制代码

Random r1 = new Random(20);

或者默认当前系统时间对http://www.111cn.net/jsp/Java/45403.htm 应的相对时间有关的数字作为种子数:

 代码如下 复制代码

Random r1 = new Random();

种子数只是随机算法的起源数字,和生成的随机数字的区间无关。

2、Random类中的常用方法

下面对这些方法做一下基本的介绍:

 代码如下 复制代码

a、public boolean nextBoolean()

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

 代码如下 复制代码

b、public double nextDouble()

该方法的作用是生成一个随机的double值,数值介于[0,1.0)之间。

 代码如下 复制代码
c、public int nextInt()

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

如果需要生成指定区间的int值,则需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。

 代码如下 复制代码
d、public int nextInt(int n

)

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

如果想生成指定区间的int值,也需要进行一定的数学变换,具体可以参看下面的使用示例中的代码。

 代码如下 复制代码

e、public void setSeed(long seed)

该方法的作用是重新设置Random对象中的种子数。设置完种子数以后的Random对象和相同种子数使用new关键字创建出

的Random对象相同。

3、Random类使用示例

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

代码均使用以下Random对象r进行生成:

 代码如下 复制代码

Random r = new Random();

a、生成[0,1.0)区间的小数

 代码如下 复制代码

double d1 = r.nextDouble();

直接使用nextDouble方法获得。

b、生成[0,5.0)区间的小数

 代码如下 复制代码

double d2 = r.nextDouble() * 5;

因为nextDouble方法生成的数字区间是[0,1.0),将该区间扩大5倍即是要求的区间。

同理,生成[0,d)区间的随机小数,d为任意正的小数,则只需要将nextDouble方法的返回值乘以d即可。

c、生成[1,2.5)区间的小数

 代码如下 复制代码

double d3 = r.nextDouble() * 1.5 + 1;

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

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

随机数字,然后将生成的随机数字区间加上d1即可。

d、生成任意整数

 代码如下 复制代码

int n1 = r.nextInt();

直接使用nextInt方法即可。

e、生成[0,10)区间的整数

 代码如下 复制代码

int n2 = r.nextInt(10);

n2 = Math.abs(r.nextInt() % 10);

以上两行代码均可生成[0,10)区间的整数

均匀分布性

 代码如下 复制代码

import java.util.Random;
 
public class RandomDemo {
    /**

     * 小伙部落
     *
     * @param args
     */
    public
static void main(String[] args) {
        Random r = new Random();

        int n5 = r.nextInt(100);
        String ran = "";
        if
(n5 < 55) {       //55个数字的区间,55%的几率
            ran = "55%";
       
} else if (n5 < 95) {//[55,95),40个数字的区间,40%的几率
            ran = "40%";

        } else {
            ran = "5%";     //剩余几率,你懂得!
        }

        System.out.println(ran);
    }
}

java中random()函数用法介绍的更多相关文章

  1. JAVA中字符串函数subString的用法小结

    本篇文章主要是对JAVA中字符串函数subString的用法进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 String str; str=str.substring(int begi ...

  2. Oracle trunc()函数,decode()函数,substr函数,GREATEST函数,java中substring函数的用法

    --Oracle trunc()函数的用法/**************日期********************/1.select trunc(sysdate) from dual --2013- ...

  3. Java 中 synchronized的用法详解(四种用法)

    Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧 ...

  4. Oracle 中 decode 函数用法

    Oracle 中 decode 函数用法 含义解释:decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值) 该函数的含义如下:IF 条件=值1 THEN RETURN(翻译 ...

  5. php中opendir函数用法实例

    这篇文章主要介绍了php中opendir函数用法,以实例形式详细讲述了opendir函数打开目录的用法及相关的注意事项,具有一定的参考借鉴价值,需要的朋友可以参考下 本文实例分析了php中opendi ...

  6. php中setcookie函数用法详解(转)

    php中setcookie函数用法详解:        php手册中对setcookie函数讲解的不是很清楚,下面是我做的一些整理,欢迎提出意见.        语法:        bool set ...

  7. 转:十八、java中this的用法

    http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...

  8. java中random的几个方法的使用Math.random()和random().

    random java中我们有时候也需要使用使用random来产生随机数,下面我来简单的介绍下java中random的使用方法 第一种:Math.random() public static doub ...

  9. PHP中 spl_autoload_register() 函数用法

    这篇文章主要介绍了PHP中spl_autoload_register()函数用法,结合实例形式分析了__autoload函数及spl_autoload_register函数的相关使用技巧,需要的朋友可 ...

随机推荐

  1. P3258 [JLOI2014]松鼠的新家

    P3258 [JLOI2014]松鼠的新家倍增lca+树上差分,从叶子节点向根节点求前缀和,dfs求子树和即可,最后,把每次的起点和终点都. #include<iostream> #inc ...

  2. datatables后端分页

    0x01 缘由 平时较少涉及前端,这次本以为模板中有表单,分页跳转搜索功能都比较齐全,可以高枕无忧,但是细看模板中的分页跳转是不需要与后台交互的,数据一次性写在前端,再有前端插件完成分页. 这种方式肯 ...

  3. 20172328《程序设计与数据结构》实验三 敏捷开发与XP实践报告

    20172328<程序设计与数据结构>实验三 敏捷开发与XP实践报告 课程:<程序设计与数据结构> 班级: 1723 姓名: 李馨雨 学号:20172328 实验教师:王志强 ...

  4. 2017-10-5-Python

    想学习Python很长时间了,工作中使用Python脚本解决问题真的很爽. 插入一张Python的py文件常见的结构图: if __name__ =="__main__" 这条语句 ...

  5. Java并发编程(十二)-- 阻塞队列

    在介绍Java的阻塞队列之前,我们简单介绍一下队列. 队列 队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向 ...

  6. Java笔记(六)列表和队列

    列表和队列 一)ArrayList 1.基本原理 ArrayList是一个泛型容器.内部会有一个数组elementData,一般会有预留空间 有一个整数记录实际的元素个数. private trans ...

  7. Shell脚本笔记(四)条件判断

    条件判断 一.条件测试与比较 一)条件测试基础语法 下列测试语法中如果测试的表达式成立,条件测试就会结束,并返回0. 1.test条件测试 语法:test  <测试表达式> 2.中括号条件 ...

  8. [LOJ6356]四色灯

    [LOJ6356]四色灯 题目大意: 有\(n(n\le10^9)\)个编号\(1\sim n\)的格子和\(m(m\le20)\)个按钮.每个格子有一个初始为\(0\)的数,每个按钮有一个数字\(a ...

  9. C++程序设计方法2:函数运算符重载

    函数运算符()重载 函数运算符()也能重载,它使得对象看上去像是一个函数名 ReturnType operator() (Parameters) { ...... } ClassName Obj; O ...

  10. JAVA自学笔记19

    JAVA自学笔记19 1.集合总结 Collection(单列集合) List(有序可重复) ArrayList:底层数据结构是数组 ,查询快,增删慢.线程不安全,效率高 Vector:底层数据结构是 ...