关于产生随机数的函数的问题

关于产生随机数的函数的问题


之前的笔记不是说的Math.random()产生的是0-1左闭右开的数吗?那我乘2不就是代表0-2左闭右开,那为什么乘以10加1不是代表0-11左闭右开而是1-10两边都是闭

正在回答

登陆购买课程后可参与讨论,去登陆

4回答

同学你好,非常抱歉给同学造成的误解,这里Math.random()乘以10再加1的结果值转为int,正确的取值范围的结果是[1,10],从1到10的整数!

这里整体回答一下同学的问题:

      Math.random()*10+1 ,Math.random()产生的是[0,1)之间的随机数,Math.random()*10+1 产生的就是[1-11)之间的随机浮点数!

    (int)(Math.random()*10+1)    当将这个数据转为整数时,最小是1,1转为整数还是1,比较大的值是10.9,这个值转为int为10,所以最后的取值区间是[1,10]之间的整数!

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

提问者 慕运维lh 2019-05-29 16:14:13

我是真的没有搞懂两位老师的意思。能不能请一位老师来认真回答哈我最初的问题吗?我都有点蒙圈了 如果真的是[1,11)浮点型。那转换成整型也应该是[1,10]吧。?为什么正确的结果却是[0-10]呢

吃吃吃鱼的猫 2019-05-27 14:34:49

同学你好,Math.random()*10+1产生的是[0-11)之间的浮点数哦~

http://img1.sycdn.imooc.com//climg/5ceb84e40001824403030046.jpg

当将Math.random()*10+1强转为int类型时,如下图所示,此时,才会产生[0,10]之间的整数呢~

http://img1.sycdn.imooc.com//climg/5ceb84c2000176ea03030054.jpg

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕运维lh #1
    老师你再仔细看一下你给我的回复哦,到底Math.random()*10+1产生的是[0-11)之间的浮点数还是[1-11)?。。。
    2019-05-28 16:57:32
  • 好帮手慕小班 回复 提问者 慕运维lh #2
    同学你好,非常抱歉这里是老师的失误,Math.random()*10+1;产生的是[1,11)之间的浮点数! ​如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
    2019-05-28 17:55:26
  • 提问者 慕运维lh 回复 好帮手慕小班 #3
    那既然是[1,11)浮点数,转换成整型后也应该是[1,10]吧。跟你最开始说的又对不上,还希望老师仔细的指导哈
    2019-05-29 09:00:27
吃吃吃鱼的猫 2019-05-26 17:46:23

同学你好,Math.random()*10+1产生的是[1,11)之间double类型的浮点数。

当它强转为int类型时,例如:10.9转换为int类型即为:10。

这时,就可以说产生的是[0,10]之间的整数了。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

  • 提问者 慕运维lh #1
    那老师Math.random()*10+1产生的为什么不是[0-11)之间的浮点数呢?,推理逻辑就是我最开始的提问逻辑
    2019-05-27 13:02:16
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师