public class TestMath
{
public static void main(String[] args) 
{
double a = 3.2;
double b = Math.pow(a , 5);
System.out.println(b);

         double c = Math.sqrt(a);
System.out.println(c); double d = Math.random();///该句的运行结果为什么是0到1之间的随机数数呢?
                                                            请高手解析下啊!具体点哦!
System.out.println(d); double e = Math.sin(1.57);
System.out.println(e);
}
}

解决方案 »

  1.   

    Math.random()方法生成0.0至1.0(不包含1.0)的double型随机数,一般地, a + Math.random() * b可以返回a到a+b之间的随机数,不包括a+b. 这里有个简便、快捷的伪随机数函数,有兴趣的话可以看一下,具体的算法说明在代码注释中
    public class RandomGenerator {    public static void main(String[] args) {
            for(int i = 0; i < 100; i++) {
                System.out.println(nextInt(10));
            }
        }
        
        public static int nextInt() {
            return xorShift(new Object().hashCode() ^ (int)System.nanoTime());
        }
        
        public static int nextInt(int limit) {
            return Math.abs(nextInt() ^ (int)System.nanoTime()) % limit;
        }    /**
         * George Marsaglia, <i>Xorshift RNGs</i>, Journal of Statistical Software,
         * 8(14), 2003. pdf: http://www.jstatsoft.org/v08/i14/paper
         *
         * @param num
         * @return
         */
        private static int xorShift(int num) {
            num ^= (num << 6);
            num ^= (num >>> 21);
            num ^= (num << 7);
            return num;
        }
    }
      

  2.   

    random方法返回带正号的 double 值,大于或等于 0.0,小于 1.0。返回值是一个伪随机 (pseudorandomly) 选择的数,在上述范围内(大致)均匀分布。 
      

  3.   

    random只能生成0-1之间的数  想要生成自己想要的范围的数字 要根据这个范围自己限定
      

  4.   

    你去跟踪一下JDK的源码,看看他是怎么实现的,这种一般是个算法问题,实现方法有很多,JDK的实现还是比较复杂的,给你个简单的实现算法
    x[i+1]=A*x[i]%M
    简要说明一下常数A和M,注意,所有产生的数都小于M,还有就是必须给定一个初始值x[0]来产生此序列,
    x[0]就是这个随机数生成器的种子。A和M需要精心挑选,M必须为素数,否则会产生0,但是这种得出的结果是周期性的,如M=11,A=7种子x[0]=1,则序列为
     7,5,2,3,10,4,6,9,8,1,7,5,2,
    序列从M-1开始周期循环,周期T=M-1,因此你要让周期大,就必须选个大的M
    比如你要实现产生0到1的随机数,可以设M为足够大,如1000000000,然后把得到的随机数再除以M即1000000000,得到的就是0到1的随机数,M越大,随机的分布就越均衡,
    实际上M一般都取到足够大的,一般取M为2的31次方减一,即2147483647,这样产生的随机序列才均衡
    这只是随机化的一个简单的实现,更好的方法还有,就是太复杂,无需深究,基本原理差不太多
      

  5.   

    wo  hui  a   a  
      

  6.   

    static double random() 
              返回带正号的 double 值,该值大于等于 0.0 且小于 1.0。 你可以去看API  里面有的