在java中实现随机数的类有两种,分别是和java.util.Math 和 java.util.Random

第一种:java.lang.Math.random()

Math.random()方法创建的是[0.0,1.0)范围类的浮点数

示例代码:

        int i = 0;
System.out.println("Math.random生成随机数!");
while (i < 3) {
System.out.println("第" + i + "个数:" + Math.random());
i++;
}

控制台输出:

第二种:java.util.Random类

java.util.Random类有两种构造器,分别为Random()和Random(long seed)

两种构造器最主要的区别就在于seed的不同,seed是实现Random类所需的变量,也就是Random类创建所需的种子,Random根据它来生成不同的随机数序列.

Random()用的是默认的seed值,而Random(long seed)实现则是根据输入的seed值来生成对应的随机数序列,

也就是说相同seed的Random对象创建的随机数序列相同.

示例代码:

        java.util.Random random1 = new java.util.Random(10);
java.util.Random random1_sanmeseed = new java.util.Random(10);
java.util.Random random2 = new java.util.Random();
System.out.println("random1:"+random1.nextInt());
System.out.println("random1_sanmeseed:"+random1_sanmeseed.nextInt());
System.out.println("random2:"+random2.nextInt());

控制台输出:

注:使用nextInt测试时要注意使用无参或者参数相同的方法 否则就是random的seed值相同 也会输出不同的随机数.

由此可见在java.util.Random类的适用范围更广泛一些,随后大致讲下它的几个方法,分别是:

nextInt();nextInt(int bound);nextDouble();

nextInt() nextInt(int bound)的不同在于bound 限制了随机数出现的范围,使用后者方法生成的随机数是在[0,bound)之间 不带参数则生成[-2147483648,2147483647]范围内的随机数,也是int的取值范围.

        java.util.Random random = new java.util.Random();
for(int i=0;i<10;i++){
System.out.println("带bound参数方法生成的随机数:"+random.nextInt(10));
System.out.println("无参数方法生成的随机数: "+random.nextInt());
}

控制台输出:

nextDouble()方法 返回的随机数和Math.random()返回的随机数范围相同,均为[0,1)之内的随机数,

那么实现[-3,12)范围内的随机小数怎么办呢?(此问题同样适用于nextInt(),nextFloat()等方法)

        java.util.Random random = new java.util.Random();
for(int i=0;i<10;i++){
double num = random.nextDouble()*15-3;
System.out.println("[-3,12)之间的Double随机数:"+num);
}

控制台输出:

最新文章

  1. Angular定义服务-Learn By Doing
  2. delay(和setTimeout()的区别
  3. 使用srvany.exe将任何程序作为Windows服务运行
  4. PHP 数组排序方法总结
  5. DbUtils使用例子
  6. php header 函数详解
  7. 装饰器模式(Decorator)
  8. jQuery UI 之 LigerUI 快速入门
  9. MacOS下免密码ssh登陆
  10. JSP基础使用
  11. HTTP协议扫盲(八 )响应报文之 Transfer-Encoding=chunked方式
  12. centos6.5中rpm包安装mysql5.7(初始化出错如何解决)
  13. Python-lambda表达式和推导式
  14. Centos7.4 安装Docker
  15. Python一个文件调用另外一个文件的方法
  16. 所有JTAG集成电路都应该支持菊花链
  17. 日期函数、时间函数总结(MySQL 5.X)
  18. 雷林鹏分享:Ruby CGI 编程
  19. SSM-CRUD入门项目——修改与PUT请求
  20. Atitit. 解决80端口 System 占用pid 4,,找到拉个程序或者服务占用http 80服务

热门文章

  1. ionic实战系列(一):ionic的开发环境配置和编译、发布
  2. Thread.interrupt()方法理解
  3. node.js后台快速搭建在阿里云(一)(express篇)
  4. python基础学习(十二)
  5. koa/redux middleware系统解析
  6. 记一次JavaWeb网站技术架构总结
  7. MyBatis --- 动态SQL、缓存机制
  8. sed修炼系列(三):sed高级应用之实现窗口滑动技术
  9. zTree勾选状态的禁用节点不在选中节点里
  10. SourceTree使用方法介绍