随机数问题

随机数问题

老师,(int)( Math.random()*40)这个能随机到40吗?
(int)( Math.random()*41)能随机到40不?如果能,随机的概率和其他数一样不

正在回答 回答被采纳积分+1

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

2回答
好帮手慕阿园 2020-07-02 14:40:54

同学你好,慕丝1539783同学的解释是正确的,(int)( Math.random()*40)是随机获取0-40之间的整数,所以是不能获取到40的,而(int)( Math.random()*41)是随机获取0-41之间的整数,是可以获取到40的; 产生随机数的随机算法是伪随机,也就是通过某种规则来产生随机数,概率也是随机的

祝学习愉快

慕丝1539783 2020-07-02 12:56:17

Math.random()是大于等于 0.0 且小于 1.0 的伪随机小数

也就是意味着    0<=  Math.random()  <1

那么    0*40<=   Math.random()*40  < 1*40

所以   (int) (0*40)  <=   (int) (Math.random()*40)  < (int) (1*40)

结果   0<=  (int) (Math.random()*40)  < 40

不会到40,想到40就要(int) (Math.random()*41)

因为Math.random()产生的是伪随机数,所以这个概率要看你怎么定义了。

  • 提问者 对方正在说话 #1
    我就是觉得好像(int)( Math.random()*41)随机到40的概率会比别的小一点
    2020-07-02 12:57:53
  • (int) (Math.random()*41) 如果(int) (Math.random()*41)=0,那必须0<= Math.random()*41 <1 同理如果(int) (Math.random()*41)=40,那必须40<= Math.random()*41 <41 40和其他数的概率,理论上是一样。 但是又因为是伪随机,其实都是计算机通过计算得到的。
    2020-07-02 13:02:47
  • 慕丝1539783 回复 提问者 对方正在说话 #3
    因为Math.random()*41可以得到40,也可以得到40.999999,所以理论上都一样。 并不是到40就不能再向上了。
    2020-07-02 13:06:28
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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