高考考试网
当前位置: 首页 高考资讯

java在范围内随机数生成方法(JAVA高效的随机数生成器)

时间:2023-06-17 作者: 小编 阅读量: 3 栏目名: 高考资讯

由random方法产生的数字有三分之二落在随机数取值范围的前半部分。现在选择随机数生成器时,大多使用ThreadLocalRandom。它会产生更高质量的随机数,并且速度非常快。我自己测试了一下,比Random快了3.6倍。但是对于ForkJoinPool和并行Stream,则推荐使用SplittableRandom。

#java# #Java# #程序员#

不知好几年前的一个问题:假设你希望产生位于0和某个上界之间的随机整数,你该怎么去做?时隔多年后又重新记起,转眼一看,她已经有了很大的发展。

几年前的写法

突然翻出几年前写的东西,看到这个原始的写法,顿感漏洞百出。虽然这个写法目前都还感觉不错,但是有着三大缺陷。

一、如果n是一个比较小的2的乘方,经过一段相当短的周期之后,它产生的随机数序列将会重复,生成的效率低下。

二、如果n不是2的乘方,那么平均起来,有些数会比其他的数出现得更为频繁。

如果n比较大,这个缺点就会非常明显,如果将N我们暂定为100万,重复执行1万次,我们会发现它打印出来的数接近于666666。由random方法产生的数字有三分之二落在随机数取值范围的前半部分。随机值就变成不是随机值了。

调侃一句:说不定TX的抽奖就是这样的,我多年抽奖不中的原因貌似找到了。

三、在极少数情况下,它会失败,因为会返回一个落在指定范围之外的数。

因为这个方法试图通过调用Math.abs,将rnd. nextInt()返回的值映射为一个非负整数。如果nextInt()返回Integer.MIN VALUE,那么Math.abs也会返回Integer.MIN_VALUE,假设n不是2的乘方,那么取模操作符(%)将返回一个负数。这几乎肯定会使程序失败,而且这种失败很难重现!

正常的写法

这种写法简单,并且完美地避免了最原始的上面的问题,但是这似乎还不够。

优秀的 ThreadLocalRandom

从Java7开始,提供了一个全新的ThreadLocalRandom,就不应该再使用Random了。现在选择随机数生成器时,大多使用 ThreadLocalRandom。它会产生更高质量的随机数,并且速度非常快。我自己测试了一下,比Random快了3.6倍。但是对于ForkJoin Pool和并行Stream,则推荐使用SplittableRandom。

ThreadLocalRandom写法

SplittableRandom写法

不知道友友们,有没有好的建议和意见,觉得不错,点赞支持下,相互交流交流

,
    推荐阅读
  • 水银温度计要间隔多久使用(为什么水银温度计使用之前要甩几下)

    最近全国都在防控新型冠状病毒的疫情,相信很多人和小编一样开始在家测量体温了。原来水银温度计和气象温度计的结构设计不同。我们常见的红色液柱的温度计就是其中一种。气象温度计但是体温温度计为了要查看温度,需要保留水银柱的高度。上面的一截是指示体温的,由于它自身的内聚力,不会流到水银球里。生活中一个小小的体温计也有这样巧妙设计。

  • 黑色休闲裤穿搭(希望对你有所帮助)

    以下内容大家不妨参考一二希望能帮到您!浅棕色格子衬衫+黑色长袖T恤:浅棕色格子衬衫内搭一件黑色长袖T恤,下身搭配一条黑色休闲裤,叠穿的搭配是很增添时尚感的。浅灰色针织开衫:春天是穿针织开衫的季节,这款浅灰色针织开衫颜色洋气,款式简约,搭配一条黑色休闲裤,很显大方。

  • 宠物美容等级证书在哪考(宠物美容师等级)

    目前这个等级都是通过行业协会相应考试认定的。同时各成员国也都会举办宠物美容师的鉴定和赛事。并在FCI授权下对认定的纯种犬种进行繁殖管理。AKC是一个非营利组织,也是世界上最大的纯种犬登记组织。NGKC,也称名将犬业俱乐部。是AKC在中国区唯一授权机构。选手报名参赛后,比赛当天在规定时间内,当场修剪造型,由审查员当场审定出考试结果。

  • 韭菜盒子怎么做的(按照这个步骤做准没错)

    韭菜盒子怎么做的首先将面粉放入碗中,加水搅拌成絮状,拌至无干粉状态,用手揉成一个光滑的面团,盖保鲜膜醒半小时。将面团揉匀,切成长条,分成40克左右的剂子,按扁擀成饺子皮,韭菜馅中放入虾皮和盐,打入鸡蛋拌匀。最后取一张饺子皮,中间放入韭菜馅,捏成饺子的形状,依次包好所有盒子。起锅烧热放油,放入韭菜盒子。轻轻晃动锅,防止粘锅,小火煎至底部微黄,沿锅边倒入半碗清水,盖上锅盖。

  • 友基手绘板怎么连接手机(友基数位板连接手机)

    时尚的外观搭配防滑脚垫的设计,10×6英寸的大面板,16:9的PRO宽屏幅面同时可自动识别显示器比例。自带了OTG转接头和MicroUSB接口,可以连接手机和ipad,开启手机平板绘图模式,自适应手机画面比例进行全面版操作。也是自带的OTG转接头可以连接手机或平板,兼容更多的APP和电脑软件。只有4个可自定义的触摸按键,基础工具如果分配平均也可以操作的过来。

  • 电脑用u盘装系统自动关机(为什么电脑用u盘装系统自动关机)

    下面内容希望能帮助到你,我们来一起看看吧!电脑用u盘装系统自动关机首先考虑是主板不支持u盘安装,导致了bios错误,导致自动关机。建议检查一下bios设置,恢复默认值试试。考虑为u盘做的系统有问题,无法加载造成,这时候建议重新做启动u盘。考虑是硬件问题所选择的usb口电压不足或者短路,引起硬件保护进行的关机。

  • 兔子怎么吃最有效(如何科学搭配兔子的饮食)

    兔兔食用了高淀粉高蛋白以及肉类的食物,极易导致过多淀粉以及营养物质进入后肠,继而导致严重的例如魏氏梭菌病等腹泻病,必须严格限制。为了安全起见,最好不要喂兔兔吃任何人类的主食。以上的分类作用并不是绝对的,绝大多数食物的营养成分,均是你中有我,我中有你的。豆科牧草的营养价值普遍高于禾本科牧草,故过量饲喂可能会导致兔兔肥胖,并且可能会导致营养性腹泻以及软便增多的现象。

  • 关于感恩的段落摘抄(关于感恩的段落摘抄100字)

    学会感恩,因为这会使世界更美好,使生活更加充实。因为感恩才会有这个多彩的社会,因为感恩才会有真挚的友情。在这个过程中,会遇到父母给我的关心与帮助,我感谢他们,我爱父母。即使拉得在长,在远,也可以感受到对方的心。

  • 身份证18位数字含义(常见身份证号码为什么很少见到1开头的)

    首都北京是在华北又是直辖市所以是1开头,第二位数是在各区域的划分后根据建国初期各地区经济水平排序的。具体到各个省份的判断,首先根据省份所在的地区方位确定第一位数字。举例说明,一个身份证号码以42开头,看到4可以确定在中南,看到2,就是建国初期经济排在第二位,然后就可以确定是湖北了。第七到14位代表的是出生日期。

  • 10月出生对应的花到底是什么花(不同月份出生都有专属花)

    在中国传统文化中,杏花是十二花神中的二月花。牡丹自带一种高贵典雅的气质,雍容大方,不卑不亢,有一种不容侵犯的威严感。十月芙蓉花芙蓉花的名字来源于荣华富贵,有纯洁、富贵吉祥等意。芙蓉花也常形容容貌较好的女子,象征着女性的美貌。芙蓉花花朵较大,颜色丰富,花姿优美,很受欢迎。芙蓉花适合庭院栽种,植株高度能达到四五米。梅花又被称之为五福花,因为它的花瓣有五瓣,分别代表长寿、顺利、和平、快乐、幸运。