java用Math.random() 随机数控制范围问题
用Math.random()怎么输出1~7的整形数,怎么输出13~19的整形数之类的,求解决!...
用Math.random() 怎么输出1~7的整形数, 怎么输出 13~19的整形数 之类的,求解决!
展开
3个回答
展开全部
这是一段程序中的代码:
int randomNumber=(int)(Math.random()*8)+1;
所给出的注释是:得到一个1到8之间的随机整数。开始的时候不是很懂,于是翻书、上网找资料,但是得到的结果都是一样的。Math.random()的作用是得到0-1之间的随机数。那么是如何实现的呢?
仔细想一想其实并不是很复杂:Math.random()的取值应该是0-1(事实上取不到0和1)之间的随机小数,乘以8之后应该是0-8之间的随机小数,也就是0.****到7.****之间的小数(大于0而小于8),经过int类型转换之后,应该是0-7之间的随机整数,所以"+1"之后就会得到1-8之间的
int randomNumber=(int)(Math.random()*8)+1;
所给出的注释是:得到一个1到8之间的随机整数。开始的时候不是很懂,于是翻书、上网找资料,但是得到的结果都是一样的。Math.random()的作用是得到0-1之间的随机数。那么是如何实现的呢?
仔细想一想其实并不是很复杂:Math.random()的取值应该是0-1(事实上取不到0和1)之间的随机小数,乘以8之后应该是0-8之间的随机小数,也就是0.****到7.****之间的小数(大于0而小于8),经过int类型转换之后,应该是0-7之间的随机整数,所以"+1"之后就会得到1-8之间的
展开全部
Math.random()是生成0~1之间的小数,Math.floor(Math.random()*7+1)输出1~7的整形数
Math.floor(Math.random()*7+13)输出 13~19的整形数
Math.floor(Math.random()*7+13)输出 13~19的整形数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
记住一个公式:
a<= x < a+b 的表示为:(int)(a + Math.random() * b)
如果要得到1~7的整形数,a=1,b=7-1;如果要把7包进来,那么b = 7;
同理,要得到13~19,a = 13, b = 19 - 13.
a<= x < a+b 的表示为:(int)(a + Math.random() * b)
如果要得到1~7的整形数,a=1,b=7-1;如果要把7包进来,那么b = 7;
同理,要得到13~19,a = 13, b = 19 - 13.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询