Java基础知识12--Random类
一、简介
Random类位于java.util包下,此类的实例用于生成伪随机数流。之所以称之为伪随机,是因为真正意义上的随机数(或者称为随机事件)在某次产生过程中是按照实验过程表现的分布概率随机产生的,其结果是不可预测,不可见的。而计算机中的随机函数是按照一定的算法模拟产生的,其结果是确定的,可见的。我们认为这样产生的数据不是真正意义上的随机数,因而称之为伪随机。
二、Random类的使用
2.1 生成Random对象
Java API中提供了两个构造方法来new一个Random对象。无参构造底层调用的也是有参构造,将System.nanoTime()作为参数传递。即如果使用无参构造,默认的seed值为System.nanoTime()。
Random rand =new Random(25); int i; i=rand.nextInt(100);
初始化时25并没有起直接作用(注意:不是没有起作用),rand.nextInt(100);中的100是随机数的上限,产生的随机数为0-100的整数,不包括100。
测试案例:
public class RandomTest { public static void main(String[] args) { Random ran1 = new Random(20); System.out.println("使用种子为20的Random对象生成[0,10)内随机整数序列: "); for (int i = 0; i < 10; i++) { System.out.print(ran1.nextInt(10) + " "); } System.out.println(); Random ran2 = new Random(20); System.out.println("使用另一个种子为20的Random对象生成[0,10)内随机整数序列: "); for (int i = 0; i < 10; i++) { System.out.print(ran2.nextInt(10) + " "); } System.out.println(); Random ran3 = new Random(10); System.out.println("使用另一个种子为10的Random对象生成[0,10)内随机整数序列: "); for (int i = 0; i < 10; i++) { System.out.print(ran3.nextInt(10) + " "); } System.out.println(); } }
运行效果:
2.2 Java.util.Random 常用方法
protected int next(int bits):生成下一个伪随机数。 boolean nextBoolean():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。 void nextBytes(byte[] bytes):生成随机字节并将其置于用户提供的 byte 数组中。 double nextDouble():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。 float nextFloat():返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。 double nextGaussian():返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。 int nextInt():返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。 int nextInt(int n):返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。 long nextLong():返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。 void setSeed(long seed):使用单个 long 种子设置此随机数生成器的种子。
测试案例:
public static void main(String[] args) { Random random = new Random(); System.out.println("nextInt():" + random.nextInt()); //随机生成一个整数,这个整数的范围就是int类型的范围-2^31~2^31-1 System.out.println("nextInt(20):" + random.nextInt(20)); //随机生成一个整数,这个整数的范围就是[0,20) 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)区间的小数 }
执行结果:
参考文献:
https://www.cnblogs.com/yrrAwx/p/7806444.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
2019-09-15 020 文件(图片)上传功能---涉及switchhost和Nginx的使用
2019-09-15 019 品牌的新增
2019-09-15 谷歌浏览器扩展程序中安装vue-devtools插件