首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

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

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)表示随机数的范围,种子和范围是相关联的,一个 种子对应一个范围内的一个固定的随机数,如果不填种子,则会默认取当前时间的毫秒数作为种子来生成随机数。

03

项目笔记之订单号生成规则以及方法,第一篇!

小伙伴们在日常的商城项目开发中,都会遇到订单号生成的问题,今天呢小编就带领大家去解读一下生成订单号的问题!    首先,订单号我们要明确它有有3个性质:1.唯一性  2.不可推测性3.效率性,唯一性和不可推测性不用说了,效率性是指不能频繁的去数据库查询以避免重复。况且满足这些条件的同时订单号还要足够的短。不知道小伙伴们在日常的项目中是否也和我一样去思考过生成订单的一些小问题,可能你也会说,这些东西不用想的那么复杂,其实呢,小编也是同意大家的看法,但是殊不知我们做程序的都讲究严谨性,而且在订单模块的开发中,订单号的位置相信大家都知道,所以呢,我们在写这些小程序的时候,不妨花上几分钟去思考一下为什么这样去定义!好了,下面就告诉大家生成订单的办法了!    首先,我们生成订单的方式呢:可以采用时间戳加随机数的方式比如:time().rand(10000,99999);这样呢就生成了一个15位的随机数,时间戳呢精确到了毫秒,而后五位随机数,也去除了高并发状况下,订单号重复的情况,当然了我们也可以把时间戳简单的处理一下变成了:date("YmdHis").rand(10000,99999);这样的方式,相信小伙伴们也注意到了我们一直在使用一个rand的PHP的随机数函数,所以呢,当我们去学习PHP的基础的时候,我们遇到随机数的函数的时候,是不是还在想,这个函数到底是有什么用途的呢?现在小伙伴们是不是应该明白了呢!当然了我们还可以将其封装成一个方法,以备我们相似项目中使用,也提高了我们日常代码的可复用性,使我们的代码的效率也提高了不少,那要怎么封装呢,小编给大家写一个简单的小示例:function

08

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券