java生成随机数的方法_java随机产生一个数

java生成随机数的方法_java随机产生一个数Java中常用的两种产生随机数的方法一、java.lang.Math类中的random()方法;调用这个Math.random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Java中常用的两种产生随机数的方法

一、java.lang.Math类中的random()方法;

调用这个Math.random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0,即取值范围是[0.0,1.0)的左闭右开区间,返回值是一个伪随机选择的数,在该范围内(近似)均匀分布。

第一次调用该方法时,它将创建一个新的伪随机数生成器,与以下表达式完全相同

new java.util.Random

之后,新的伪随机数生成器可用于此方法的所有调用,但不能用于其他地方。

此方法是完全同步的,可允许多个线程使用而不出现错误。但是,如果许多线程需要以极高的速率生成伪随机数,那么这可能会减少每个线程对拥有自己伪随机数生成器的争用。  

 
二、java.util.Random类;
1、java.util.Random类中实现的随机算法是伪随机,也就是
有规则的随机,所谓有规则的就是在给定种(seed)的区间内随机生成数字;
2、相同种子数的Random对象,相同次数生成的随机数字是完全相同的;
3、Random类中各方法生成的随机数字都是均匀分布的,也就是说区间内部的数字生成的几率均等;
 
下面Random()的两种构造方法
1.Random():创建一个新的随机数生成器。
2.Random(long seed):使用单个 long 种子创建一个新的随机数生成器。
 
//获取当前时间的毫秒数作为随机数种子
long t = System.currentTimeMillis();

1.protected int next(int bits)://生成下一个伪随机数。
2.boolean nextBoolean()://返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的boolean值。
3.void nextBytes(byte[] bytes)://生成随机字节并将其置于用户提供的 byte 数组中。
4.double nextDouble()://返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布的 double值。
5.float nextFloat()://返回下一个伪随机数,它是取自此随机数生成器序列的、在0.0和1.0之间均匀分布float值。
6.double nextGaussian()://返回下一个伪随机数,它是取自此随机数生成器序列的、呈高斯(“正态”)分布的double值,其平均值是0.0标准差是1.0。
7.int nextInt()://返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的 int 值。
8.int nextInt(int n)://返回一个伪随机数,它是取自此随机数生成器序列的、在(包括和指定值(不包括)之间均匀分布的int值。
9.long nextLong()://返回下一个伪随机数,它是取自此随机数生成器序列的均匀分布的 long 值。
10.void setSeed(long seed)://使用单个 long 种子设置此随机数生成器的种子。

 
方法摘要也就这些,下面给几个例子:
1.生成[0,1.0)区间的小数:double d1 = r.nextDouble();
2.生成[0,5.0)区间的小数:double d2 = r.nextDouble() * 5;
3.生成[1,2.5)区间的小数:double d3 = r.nextDouble() * 1.5 + 1;
4.生成-231到231-1之间的整数:int n = r.nextInt();
5.生成[0,10)区间的整数:
int n2 = r.nextInt(10);//方法一
n2 = Math.abs(r.nextInt() % 10);//方法二
 
前面曾讲到过构造Random对象的时候指定种子的问题,到底指定种子有什么作用呢,这里直接用代码例子来做说明:
 
Java中的Random()函数

 

在定义的时候分别指定了相同的种子之后,在分别用r1和r2去[0,30)的随机数,结果编译执行后悔发现结果都是呈现AABB型的,说明r1和r2取的随机数是一模一样的(下图为实验截图)。
 
Java中的Random()函数
如果我改动代码,改成下面这样:
 
Java中的Random()函数

 

再编译输出后,就再也不会得到AABB型的结果,根据代码的区别,就可以知道指定种子数,和不指定种子数的区别在于哪里了。
 
Java中的Random()函数
 
最后再来简单对比一下这两个随机函数到底的特点:
1.java.Math.Random()实际是在内部调用java.util.Random()的,它有一个致命的弱点,它和系统时间有关,也就是说相隔时间很短的两个random比如:
double a = Math.random();
double b = Math.random();
即有可能会得到两个一模一样的double。
2.java.util.Random()在调用的时候可以实现和java.Math.Random()一样的功能,而且他具有很多的调用方法,相对来说比较灵活。所以从总体来看,使用java.util.Random()会相对来说比较灵活一些。
 
reference:
https://www.cnblogs.com/uncle-box/p/5918743.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/166494.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SecureCRT中文乱码问题的解决

    SecureCRT中文乱码问题的解决SecureCRT中文乱码问题的解决最近开始使用SecureCRT,但发现中文一直是乱码:上网搜查时编码问题,于是就把编码改为了UTF-8: 然而并没有解决问题,中文变成了?:编码修正后,还是不行,点击Font,发现字符集是西文,马上修改成中文GB2312 确定保存后,中文正常显示了: 小结:影响中文显示一般先考虑编码方式,再考虑字符集设置。…

    2022年7月17日
    13
  • 优先队列的数据结构_低优先级队列一天只能一场

    优先队列的数据结构_低优先级队列一天只能一场目录一.PriorityQueuePriorityQueue简介继承关系PriorityQueue示例二.Comparable比较器Compara接口三.Comparator比较器Comparator接口四.底层原理一.PriorityQueuePriorityQueue简介PriorityQueue,即优先级队列。优先级队列可以保证每次取出来的元素都是队列中的最小或最大的元素<Java优先级队列默认每次取出来的为最小元素&gt.

    2022年9月23日
    0
  • matlab 及数字信号实验报告,Matlab数字信号处理实验报告.doc

    您所在位置:网站首页>海量文档&nbsp>&nbsp高等教育&nbsp>&nbsp实验设计Matlab数字信号处理实验报告.doc26页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该文档所得收入…

    2022年4月8日
    47
  • 2021goland激活码 4月最新注册码_通用破解码

    2021goland激活码 4月最新注册码_通用破解码,https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月17日
    122
  • 注意Mikrotik ROS Webproxy的“漏洞”

    注意Mikrotik ROS Webproxy的“漏洞”在使用ROSWebproxy做代理时,外网的IP也可以连入,将你的ROS代理服务器当作跳板!这种情况会引起外网网卡流量和内网网卡对不上的情况:如下图于是用Torch检查的时候发现了问题:1080口流量超大,而且在转发连表里没有流量,但是在WAN口的input连表里有高流量。也就是说和这个1080口连接的IP并没有和内网进行通!关闭代理后连接消失!…

    2022年6月21日
    74
  • Boston 旅游

    Boston 旅游海滩:http://www.hamptonbeach.org/ http://www.newportmansions.org/ http://www.foxwoods.com/http://www.sunshineboston.com/bustours/mohegansun/ LaoShiChun:ConvenientPlaza,502BostonRd.Bille

    2022年6月12日
    30

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号