问答详情
源自:6-5 应用 Collections.sort() 实现 List 排序

产生随机数的问题

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

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

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

提问者:Chengl 2016-08-29 22:19

个回答

  • SteelIU
    2017-01-05 20:02:42

    我觉得你表达的意思是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),可能后者调用了前者的缘故吧!!!

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

  • ziom
    2016-08-30 00:47:36

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