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

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

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

由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写法

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

,
    推荐阅读
  • 姬野为什么和羽然在一起(羽然挽留姬野失败后)

    《九州缥缈录》羽然挽留姬野失败后,成为女祭司一袭紫衣充满神秘,结局最悲女主。最新的剧情中为了救姬野和世子成婚,这场婚姻只是名誉上的捆绑并没有一点实质性的夫妻之实。姬野被关在了大牢里,羽然大婚姑姑和君主欺骗了她和世子,直接把姬野送往了前线。羽然对姬野的拒绝很失望,她醉酒后再次挽留姬野也失败了,吕归尘在一旁看着羽然的无助感十分心疼。

  • 处理海鲜的三大技巧(16种常见干海鲜及其处理技巧)

    不能大火高温炸制,以防皮焦肉不透。因海参有大有小,不能同时发透,更不能确定发制几次,所以必须勤看,发现已发好的及时拣出,其余继续发制。将海参在火上烧焦外皮,用小刀刮去焦皮露出褐色,然后按上述方法进行发制。如水中有油,海参容易腐烂溶化;如水中有盐碱,则不易发透。在开肚去肠时,不要碰破海参腹内的一层腹膜,否则发时易烂。

  • 一箧磨穴砚原文翻译(一箧磨穴砚原文是什么)

    一箧磨穴砚原文翻译原文:《一箧磨穴砚》佚名〔未知〕古人有学书于人者,自以为艺成,辞而去。其人受之,因其封题不甚密,乃启而视之,皆磨穴之砚也,数十枚,方知师夙用者。顿觉羞愧,及反而学,至精其艺。那个人顿时觉得十分惭愧,就返回继续学习,一直学到书法技艺非常精通的地步。

  • 蒲公英一年四季都能种吗(花盆里撒下一把蒲公英种子)

    制作花茶等到蒲公英被养到开花以后。一般来说,选择已经开放完全的蒲公英放置在干燥的容器中,然后,选择一个阴凉通风的环境进行风干。要确保这个地方不潮湿,否则在风干的过程中,蒲公英很有可能会因为潮湿而变得腐烂。

  • 河南身份证网上可以补办吗(河南省二代身份证如何网上补办)

    ,今天小编就来说说关于河南身份证网上可以补办吗?河南省目前不支持网上补办身份证。公民身份号码是每个公民唯一的、终身不变的身份代码,由公安机关按照公民身份号码国家标准编制。公民申请领取、换领、补领居民身份证,应当登记指纹信息。根据公安部关于异地办理居民身份证的有关部署,全国已推行居民身份证异地办理。

  • 离婚了再复婚会幸福吗(离婚又复婚能回到原点吗)

    复婚容易,如初太难。答案很简单,两个人能不能复婚,主要就是看离婚的原因,比如:三观不合,对方犯了原则性错误,以及没有经济基础等等。所以,离婚后,很少有人会和对方复婚,即便是复婚,也都有一个我们最常见的理由:为了孩子。我觉得好处和坏处各占一半,这要看之前因为什么离婚的。但我们也不得不承认一个事实,那就是离婚又复婚的夫妻,再也回不到原点了,就像开头那句话所说:复婚容易,如初太难。

  • 清道夫怎么繁殖(清道夫怎么繁殖方法)

    清道夫是常见的水族箱中用来净化水质的鱼类,原产于南美洲的河流中。清道夫的繁殖方式为卵生。而再给清道夫进行繁育时,亲鱼的年龄最好是达到3龄,至少是达到2足龄的,性腺发育程度较好的,体重达到0.5公斤以上,体长在30厘米左右,体质健壮,体形正常,无畸形的。清道夫以鱼苗、海藻、细菌、饲料为主要食物饥饿难耐时也会吃少量鱼类排泄物,这也成为了它名字的由来。

  • 种子传播的方法(种子是怎么进行传播的)

    种子的传播方法很多,会根据植物的特点传播种子可以通过风力传播,比如野茼蒿、一点红、苦麦菜、蒲公英等,我来为大家科普一下关于种子传播的方法?下面希望有你要的答案,我们一起来看看吧!可以通过风力传播,比如野茼蒿、一点红、苦麦菜、蒲公英等。可以通过动物传播,比如地桃花、鬼针草、苍耳草等,还可以进行弹射传播,比如炸酱草、凤仙花、豌豆等,或是通过水力传播,比如椰子、莲子、芡实等。

  • 机械制图里面向视图是什么意思(什么叫向视图)

    以下内容大家不妨参考一二希望能帮到您!机械制图里面向视图是什么意思向视图是在主视图或其他视图上注明投射方向所得的视图,也是未按投影关系配置的视图。当某视图不能按投影关系配置时,可按向视图绘制。向视图中投影箭头和大写字母将两个视图联系在一起,它们两者之间有投影关系。

  • 说的多音字(说的多音字怎么写)

    跟着小编一起来看一看吧!说的多音字说拼音:[shuō]、[yuè]、[shuì]。基本释义详细释义[shuō]:A、用话来表达意思:我不会唱歌,只说了个笑话。C、言论;主张:学说。D、责备;批评:挨说了。爸爸说了他几句。E、指说合;介绍:说婆家。[yuè]同“悦”。[shuì]用话劝说使人听从自己的意见:游说。