Java Random介绍
一、简介
二、Random类的使用
2.1 生成Random对象

Random random = new Random()
Random random2 = new Random(long seed)
package dailytest; import java.util.Random; import org.junit.Test; /**
* Random类学习
* @author yrr
*
*/
public class RandomTest { /**
* 使用有参数构造生成Random对象
* 不管执行多少次,每次得到的结果都相同
* -1157793070
* 1913984760
* 1107254586
*/
@Test
public void test01(){
Random random = new Random(10);
for (int i = 0; i < 3; i++) {
System.out.println(random.nextInt());
}
} }
2.2 Random类中的方法
/**
* 测试Random类中的简单方法
*/
@Test
public void test02() {
Random random = new Random();
System.out.println("nextInt():" + random.nextInt()); //随机生成一个整数,这个整数的范围就是int类型的范围-2^31~2^31-1
System.out.println("nextLong():" + random.nextLong()); //随机生成long类型范围的整数
System.out.println("nextFloat():" + random.nextFloat()); //随机生成[0, 1.0)区间的小数
System.out.println("nextDouble():" + random.nextDouble()); //随机生成[0, 1.0)区间的小数 byte[] byteArr = new byte[10];
random.nextBytes(byteArr); //随机生成byte,并存放在定义的数组中,生成的个数等于定义的数组的个数
for (int i = 0; i < byteArr.length; i++) {
System.out.println(byteArr[i]);
} /**
* random.nextInt(n)
* 随机生成一个正整数,整数范围[0,n)
* 如果想生成其他范围的数据,可以在此基础上进行加减
*
* 例如:
* 1. 想生成范围在[0,n]的整数
* random.nextInt(n+1)
* 2. 想生成范围在[m,n]的整数, n > m
* random.nextInt(n-m+1) + m
* random.nextInt() % (n-m) + m
* 3. 想生成范围在(m,n)的整数
* random.nextInt(n-m+1) + m -1
* random.nextInt() % (n-m) + m - 1
* ...... 主要是依靠简单的加减法
*/
System.out.println("nextInt(10):" + random.nextInt(10)); //随机生成一个整数,整数范围[0,10)
for (int i = 0; i < 20; i++) {
//[3,15)
//这里有坑,需要注意,如果前面用了+号,应该要把计算结果整体用括号括起来,不然它会把+号解释为字符串拼接
System.out.println("我生成了一个[3,15)区间的数,它是:" + (random.nextInt(12) + 3));
}
}
package dailytest; import java.util.Random; import org.junit.Test; /**
* Random类学习
* @author yrr
*
*/
public class RandomTest {
/**
* 测试Random类中 JDK1.8提供的新方法
* JDK1.8新增了Stream的概念
* 在Random中,为double, int, long类型分别增加了对应的生成随机数的方法
* 鉴于每种数据类型方法原理是一样的,所以,这里以int类型举例说明用法
*/
@Test
public void test03() {
Random random = new Random();
random.ints(); //生成无限个int类型范围内的数据,因为是无限个,这里就不打印了,会卡死的......
random.ints(10, 100); //生成无限个[10,100)范围内的数据 /**
* 这里的toArray 是Stream里提供的方法
*/
int[] arr = random.ints(10).toArray(); //生成10个int范围类的个数。
System.out.println(arr.length);
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
} //生成5个在[10,100)范围内的整数
random.ints(5, 10, 100).forEach(System.out :: println); //这句话和下面三句话功能相同
//forEach等价于:
arr = random.ints(5, 10, 100).toArray();
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
} /**
* 对于
* random.ints();
* random.ints(ori, des);
* 两个生成无限个随机数的方法,我们可以利用Stream里的terminal操作,来截断无限这个操作
*/
//limit表示限制只要10个,等价于random.ints(10)
random.ints().limit(10).forEach(System.out :: println); //等价于random.ints(5, 10, 100)
random.ints(10, 100).limit(5).forEach(System.out :: println);
} }
Java Random介绍的更多相关文章
- java Random类详解
java Random类位于java.util包下,主要用来生成随机数,本文详解介绍了Random类的用法,希望能帮到大家 Random类 (java.util) Random类中实现的随机算法是伪随 ...
- Android下HelloWorld项目的R.java文件介绍
R.java文件介绍 HelloWorld工程中的R.java文件 package com.android.hellworld; public final class R { public s ...
- 深入Java虚拟机读书笔记第一章Java体系结构介绍
第1章 Java体系结构介绍 Java技术核心:Java虚拟机 Java:安全(先天防bug的设计.内存).健壮.平台无关.网络无关(底层结构上,对象序列化和RMI为分布式系统中各个部分共享对象提供了 ...
- java集合介绍(List,Set,Map)
前言 介绍java的常用集合+各个集合使用用例 欢迎转载,请注明作者和出处哦☺ 参考: 1,<Java核心编程技术(第二版)> 2, http://www.cnblogs.com/Litt ...
- Java学习介绍
Java版本介绍 JavaME:微型版,用于开发小型设备.智能卡.移动终端应用(使用率较低) JavaSE:标准版,用于创建桌面应用(企业用JavaSE创建桌面应用较少) JavaEE:企业版,用于创 ...
- java Random.nextInt()方法
转: java Random.nextInt()方法 lic int nextInt(int n) 该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含 ...
- 流行的9个Java框架介绍: 优点、缺点等等
流行的9个Java框架介绍: 优点.缺点等等 在 2018年,Java仍然是世界上最流行的编程语言.它拥有一个巨大的生态系统,在全世界有超过900万Java开发人员.虽然Java不是最直接的语言,但是 ...
- Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试【转】
Java监控工具介绍,VisualVm ,JProfiler,Perfino,Yourkit,Perf4J,JProbe,Java微基准测试[转] 本文是本人前一段时间做一个简单Java监控工具调研总 ...
- java JNI介绍
java JNI介绍 目录 java JNI介绍 1. Java调用C++代码 2.C++代码调用java代码 JNI是Java Native Interface的全称. oracle文档中是这样描述 ...
随机推荐
- 机器学习之三:logistic回归(最优化)
一般来说,回归不用在分类问题上,因为回归是连续型模型,而且受噪声影响比较大.如果非要应用进入,可以使用logistic回归. logistic回归本质上是线性回归,只是在特征到结果的映射中加入了一层函 ...
- mysql服务处理流程
先把错误日志定位 就是找的错误日志 然后必要的时候 重新启动服务器 排除其他的干扰 把错误日志 挪到旧文件 清空错误日志 然后试着启动 看干净的错误日志 然后 问题就解决了
- JavaUtil_04_验证码生成器
一.原理 验证码其实就是随机串.原理上可分为两种: 1.简单的验证码 直接通过字母和数字的ASCII码生成.本文采用的验证码就是这种. 2.复杂的验证码 通过一个随机串,一个指定串(如accesske ...
- BPF漫谈
源起 最近看到国内两篇文章[1][2]先后翻译了就职于Netflix的性能分析大牛Brendan Gregg于2017年7月31日写的<Golang bcc/BPF Function Traci ...
- KVM管理平台openebula安装
1.1opennebula控制台的安装 (如果要添加映像需要给200G以上给/var/lib/one,本文是共享/var/lib/one实现监控,用映像出创建虚拟机原理是从opennebula控制平台 ...
- JS模块化开发----require.js
前言 前端开发中,起初只要在script标签中嵌入几十上百行代码就能实现一些基本的交互效果,后来js得到重视,应用也广泛起来了,jQuery,Ajax,Node.Js,MVC,MVVM等的助力也使得前 ...
- ubuntu小技巧(不定期更新)
1.gedit打开windows保存的txt出现乱码 默认情况下,用ubuntu打开windows保存含有中文的txt文件时会出现乱码. 只需在终端运行以下两条命令则可解决. gsettings se ...
- 利用C#转换图片格式及转换为ico
注意:转换为ICO后效果不好. 源代码: using System;using System.Collections.Generic;using System.Text;using System.Dr ...
- 用C#实现DES加密解密解决URL参数明文的问题
啥也不说,直接上代码. 加密解码,封装到一个类,key可以自己修改. using System; using System.Security.Cryptography; using System.Te ...
- [转载] Java集合框架之小结
转载自http://jiangzhengjun.iteye.com/blog/553191 1.Java容器类库的简化图,下面是集合类库更加完备的图.包括抽象类和遗留构件(不包括Queue的实现): ...