为了账号安全,请及时绑定邮箱和手机立即绑定

产生随机数的问题

k = (int) (Math.random() * 100);

Random random=new Random();  k=random.nextInt(100);

这两种办法都是产生一个100以内的随机数,两者的区别是什么?

正在回答

2 回答

我觉得你表达的意思是Random.nextInt()方法中调用了Math.random()方法吧!!!

Math.random()是伪随机数,它是此Random随机数生成器序列中 0.0 和 1.0 之间均匀分布的 double 值

Math.random()的函数区间[0.0 , 1.0)。Math.random(double d)与random.nextDouble(d)是等效的,而且Math.random(double d)的执行效率快于random.nextDouble(d),可能后者调用了前者的缘故吧!!!

看到了觉得满意的话请采纳,谢谢!!!

1 回复 有任何疑惑可以回复我~

只是实现方式的区别,前者是利用了浮点型转整型会发生的向下取整获得[0, 99]区间的任意整数,后者是利用系统提供的API实现获取[0, 99]区间的任意整数。

1 回复 有任何疑惑可以回复我~
#1

Chengl 提问者

我总是觉得和基本数据类型、包装类有关系。 前者产生的随机数是基本数据类型,后者产生的随机数是基本数据类型还是包装类型? 往List容器里面添加的是引用数据类型啊,前者产生的随机数是基本数据类型,按理来说将它add到List容器里面会有点什么吧 说不清就总觉得有点问题/晕
2016-08-30 回复 有任何疑惑可以回复我~
#2

ziom 回复 Chengl 提问者

你想多了,跟包装类无关。还有,往list里添加基本类型数据,系统会自动帮你转换成相应包装类。
2016-08-30 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第三季
  • 参与学习       409790    人
  • 解答问题       4340    个

Java中你必须懂得常用技能,不容错过的精彩,快来加入吧

进入课程

产生随机数的问题

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信