n = (int)(Math.random()*10%4);

n = (int)(Math.random()*10%4);

这个随机数是0到几?

我认为是0到2才对啊

为什么是0到3呢

正在回答

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

2回答

同学你好,上面同学说法是正确的,Math.random()是令系统随机产生[0,1)之间的数,乘以10那就是[0,10);然后对4进行取余,如果正好取出的随机数是7,那么对4取余就是3

祝学习愉快~

  • 老黄牛与卖油翁 提问者 #1

    不好意思啊 还是有点没懂

    %4之后的区间不是[0,3)吗?

    这3后面不是个开区间么

    那不就应该没有3这个数吗?


    2021-02-22 15:55:49
  • 同学你好,同学的理解有误,该代码是先在[0,10)这个区间中取出随机数,然后针对这个数进行取余,最后的结果是这个随机数对4取余后的结果,而不是取余后再取出该区间的随机数

    同学可以分开理解下,如

    http://img1.sycdn.imooc.com//climg/6033699409ef2b8d04080128.jpg

    祝学习愉快~

    2021-02-22 16:22:34
Aubrey_bb 2021-02-22 10:32:36

random的范围是[0,1), *10之后就是[0,10)  , 再%4之后就是[0,3) (你用7对4求余,就是3啦~)

  • 提问者 老黄牛与卖油翁 #1

    不好意思啊 还是有点没懂

    %4之后的区间不是[0,3)吗?

    这3后面不是个开区间么

    那不就应该没有3这个数吗?

    2021-02-22 15:55:05
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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