public class WhileTest
{
 static boolean condition()
  {
   boolean result=Math.random()<0.99;
   System.out.println(result+" ");
   return result;
  }
 public static void main(String[] args)
 {
  while(condition())
  System.out.println("inside 'while'");
  System.out.println("exited 'while'");
  }}取随机数的时候Math.random()<0.99这个方法书上说是取0~1之间(包括0 不包括1)的一个double值 很疑惑
最后输出的时候让我很费解  

解决方案 »

  1.   

    看代码 结果应该是死循环 一直在做while吧。
      

  2.   

    <0.99 false 概率应该不是很高 嘿嘿。<0.9或许false的概率还高点。
      

  3.   

    可能
    while(true){
     ...
    }
    然后一直在print 让LZ很费解。
      

  4.   

    junjun1984的回答也让人很费解,为什么老是一直强调死循环,一直强调while(true)
    这根本就不可能是死循环!
      

  5.   

    Math.random() <0.99  随机数不满足这个条件时就输出false,程序终止.
      

  6.   

    我知道的呀 我没说肯定是死循环呀...我意思是很大的概率都跑出TRUE的结果 所以看上去一直在不停的print,所以LZ费解。
      

  7.   

    Math.random() 产生随机数[0,1)之间的数,当Math.random()产生一个>=0.99的数时,则result=false
    即终止循环
      

  8.   

    话说,在100次尝试左右,随机出一个大于0.99的double数字是很正常的
      

  9.   

    你只是让小于0.99
    但是完全可以出现0.9987664854420711
    的东西了,所以肯定就会出现false的情况了
      

  10.   

    random() 
              返回带正号的 double 值,大于或等于 0.0,小于 1.0。这种问题真是浪费时间,不知道LZ是什么意思!
      

  11.   

    怎么个费解啊?落在0.99-1之间的随机数出现的概率是很低的,所以会输出相当多的
    inside 'while'
    true 
    而当出现了这样的随机数的时候
    才会输出
    inside 'while'
    false 
    exited 'while'
    一切运行正常
      

  12.   

      我找到我费解的原因了。。Math.random()这个方法的上限数是0.99 可是下限数是0是怎么回事  不可以是负数么?
      

  13.   

    Math.random()参见源代码,它的算法就是产生[0,1)之间的数的,那你怎么去产生负数呀,要想产生[-1,0)之间的负数,好办,Math.random()-1就OK拉