Java Random.nextInt()方法原理解析[通俗易懂]

Java Random.nextInt()方法原理解析[通俗易懂]JavaRandom.nextInt()方法原理解析主要介绍了JavaRandom.nextInt()方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下licintnextInt(intn)该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。关于Randomr=newRandom(47)中47的意思今天看Java编程思想的时候看到了一段这样的代码:Rand

大家好,又见面了,我是你们的朋友全栈君。

Java Random.nextInt()方法原理解析
主要介绍了Java Random.nextInt()方法原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具
有一定的参考学习价值,需要的朋友可以参考下
lic int nextInt(int n)
该方法的作用是生成一个随机的int值,该值介于[0,n)的区间,也就是0到n之间的随机int值,包含0而不包含n。
关于Random r = new Random(47)中47的意思
今天看Java编程思想的时候看到了一段这样的代码:
Random r = new Random(47);
int a = r.nextInt(26);
System.out.println(a);
刚开始没注意那个47,以为是随机一个47以内的数,但是看到后面在nextInt(26)里面还有个26,一想26应该才是随机数的范
围,那这个47是什么呢?
然后看源码,看不懂。。。只知道是一个种子,然后百度查,总算理解了一些,如下:
首先要搞明白种子的概念:
想要获取一个范围内的随机数(例如26,随机数可能是0-25),首先需要一个种子(其实就是一个数值)。
每个种子会对应这个范围内(0-26)的唯一的一个随机数。
47这个种子在26这个范围内,所对应的随机数为24,所以每次随机得出的结果都为24.
(注意:47在26这个范围内对应的是24,这个是死的,固定的,无论你执行多少次,它还是24)
至于为什么种子47会对应24,这个涉及到java封装的算法,有兴趣可以深入了解。
但是大家可能会发现,平常我们生成随机数的时候并没有传那个种子,如下:
Random r = new Random();
int a = r.nextInt(26);
System.out.println(a);
然后一运行,发现每次运行出来的结果不一样,是所谓的随机数,原来如果没有种子的话,程序会取当前日期的毫秒数来作为
种子,所以每次执行种子都会不同,因为每次时间的毫秒数是不一样的,所以随机出来的数也就会不同。
总之,new Random(47)里面的47表示产生随机数的一个种子,nextInt(26)表示随机数的范围,种子和范围是相关联的,一个
种子对应一个范围内的一个固定的随机数,如果不填种子,则会默认取当前时间的毫秒数作为种子来生成随机数。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • pycharm 2022激活码[最新免费获取]「建议收藏」

    (pycharm 2022激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html1STL5S9V8F-eyJsa…

    2022年3月27日
    279
  • 拉格朗日中值定理_拉格朗日中值定理解决高考题

    拉格朗日中值定理_拉格朗日中值定理解决高考题定理表述定理表述如果函数f(x)满足:(1)在闭区间[a,b]上连续;(2)在开区间(a,b)内可导;那么在开区间(a,b)内至少有一点使等式成立。其他形式其他形式记令则有上

    2022年8月6日
    5
  • JRTPLIB 3.9.1文档翻译

    JRTPLIB 3.9.1文档翻译MainPageJRTPLIBAuthor:      JoriLiesenborgs      DevelopedattheTheExpertiseCentreforDigitalMedia(EDM),aresearchinstituteoftheHasseltUniversityAcknowledg

    2022年7月28日
    1
  • hibernate二级缓存配置[通俗易懂]

    hibernate二级缓存配置[通俗易懂] 二级缓存配置:    1、首先要打开二级缓存,在hibernate.cfg.xml中添加如下配置:  property name=”hibernate.cache.use_second_level_cache”>trueproperty>    2、Hibernate的二级缓存使用第三方的缓存工具来实现,所以我们需要指定Hibernate使用哪个     缓存工

    2022年5月10日
    38
  • 俯瞰开源工作流引擎Activiti「建议收藏」

    俯瞰开源工作流引擎Activiti「建议收藏」Activiti是由Alfresco软件在2010年5月17日发布的业务流程管理(BPM)框架,它是覆盖了业务流程管理、工作流、服务协作等领域的一个开源的、灵活的、易扩展的可执行流程语言框架。Activiti基于Apache许可的开源BPM平台,采用了宽松的ApacheLicence2.0开源协议,因此Activiti一经推出,就得到了开源社区的大力支持,在开源社区的支持下,Activiti吸引了很多的工作流专家参与到该项目中,并且也促使了Activiti在工作流领域的创新。

    2022年7月27日
    7
  • Java反射机制:跟着代码学反射

    Java反射机制:跟着代码学反射微信搜索:码农StayUp主页地址:https://gozhuyinglong.github.io源码分享:https://github.com/gozhuyinglong/blog-demos1.前言在OOP的世界里,万物皆对象。也就是说,我们可以将任何东西抽象成一个对象。比如人,可以抽象成一个Person类,通过newPerson()来实例化一个对象;再比如鸭子,可以抽象成一个Duck类,也可以对其进行实例化……那么这一个个类本身是不是也可以抽象成一个类呢?Java提供了一个特殊的类..

    2022年5月20日
    32

发表回复

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

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