Random rand =new Random(47); 
int i,j,k; 
j=rand.nextInt(100)+1;
随机数是不是在47到100之间产生???
如果不是,那赋初值47是什么意思???

解决方案 »

  1.   

    Random r = new Random(1);
    System.out.println(r.nextInt(3));在试试
    Random r = new Random(2);
    Random r = new Random(3);
    Random r = new Random(2008);刚有人发过帖子讨论过。
      

  2.   

    里面的47就是所谓的种子 如果不填充数值的话 那么默认参数为系统时间 THINK IN JAVA 里总会有Random rand =new Random(47)的
     作者似乎觉得47是个幸运数字~
      

  3.   

    我给你举个例子你就明白了
    Random r1= new Random(1);
    Random r2= new Random(1);
    Random r3= new Random(2);for(int i=0;i<1000;i++){
    int i = r1.nextInt(100);
    int j = r2.nextInt(100);
    int k = r3.nextInt(100);
    }这里面每一次 i和j 都是相等的 因为它们的种子一样 都是1 
    k就不一样了 因为种子是2
    产生的数和种子无关 而是你调用的nextXXX决定的 nextInt(100)就是0~99~~
      

  4.   


    楼上的有点矛盾了
    这里说:这里面每一次 i和j 都是相等的 因为它们的种子一样 都是1 k就不一样了 因为种子是2 
    而下面又说产生的数和种子无关 
    k不一样不是因为种子吗???说的有点自相矛盾
      

  5.   

    随机数不是在47和100之间,47只是一个种子。种子不变,所得的随机数就是一定!
    如果想要随机数的区间是[1,100),则用如下代码: Random rand = new Random();
     int m = rand.nextInt(100);
      

  6.   

    47是一个产生随机数的魔法数字,这个问题到现在都没人能够解释,只是经过很多次试验得到的,包括《Thinking in java》的作者布鲁斯.艾克尔也这么提到:由47做种后,产生的随机数更加体现了随机性。它没有什么具体的意义,只要理解随机数如果有一个种子,哪么出现了比较随即的随机数,而当种子是47的时候,随即率是最大的。
      

  7.   

    8楼没明白我的意思
    我说的是循环的每一次i和j都是一样的,而k和i,j不一样。
    k与i.j不一样是因为种子不同 种子是构造函数的参数,new Random括号里的1和2~~~
      

  8.   


    Random r = new Random(47); 
         for(int i =0;i<10;i++)
         {
         System.out.println("第"+(i+1)+"次:"+r.nextInt(47)); 
         } 上面的代码不管你执行多个少,他们的结果不会变。。
    比如第一次运行为
    第1次:22323
    第2次:2232323
    第3次:223233
    第4次:223235
    第5次:223237
    第6次:223238
    第7次:223239
    第8次:2232398
    第9次:223237
    第10次:2232388下次运行也是这样的。
    如果是用了
    Random r = new Random();  则不然
      

  9.   

    Random rand = new Random();
    int m = rand.nextInt(53) + 47;
      

  10.   

    7楼的注意一下,不要没有证据的发言!!!!
    这是我运行的结果:
    第 0次:85   88   47
    第 1次:13   54   4
    第 2次:34   6   78
    第 3次:48   69   73
    第 4次:17   63   62
    第 5次:34   92   62
    第 6次:96   89   76
    第 7次:32   10   99
    第 8次:74   59   98
    第 9次:53   37   2import java.util.*;
     class A
    {
        public static void main(String[] args) 
        {
    int l,j,k;
    Random rand1 = new Random(1);
    Random rand2 = new Random(1);
    Random rand3 = new Random(3);
    for (int i=0;i<10 ;i++ )
    {
    l = rand1.nextInt(100);
    j = rand1.nextInt(100);
    k = rand1.nextInt(100);
    System.out.println("第 "+i+"次:"+l+"   "+j+"   "+k);

    }
        }
    }
      

  11.   

    可以用Math类啊
    int random=(int)Math.round(Math.Random()*(100-47)+47)
      

  12.   

    不好意思上面的大小写弄错了  不好意思!
    int random=(int)Math.round(Math.random()*(100-47)+47);
      

  13.   

    应该是Random random = new Random();
    int i=0;
    i=random.nextInt(54)+47;
    System.out.println(i);吧?
      

  14.   


    应该是
    Random rand = new Random();
    int m = rand.nextInt(54) + 47;
      

  15.   

    21楼的朋友,是你错了哦,你看看你的代码,在循环体内,随机数对象都调用同一个,这样的结果当然不一样
    l = rand1.nextInt(100);
    j = rand1.nextInt(100);
    k = rand1.nextInt(100);
    System.out.println("第 "+i+"次:"+l+"   "+j+"   "+k);
      

  16.   

    21楼的朋友
    “想要获取一个范围内的随机数,首先需要一个种子(其实就是一个数值)” 这句话有误!
    如果要获得一个范围内的随机数,并不一定需要一个种子!
    Random rand=new Random();
     System.out.println(rand.nextInt(10));
    这样也能获得一定范围内的随机数!
      

  17.   

    不好意思,上面写错了,
    是28楼的朋友!
    “想要获取一个范围内的随机数,首先需要一个种子(其实就是一个数值)” 这句话有误! 
    如果要获得一个范围内的随机数,并不一定需要一个种子! 
    Random rand=new Random(); 
    System.out.println(rand.nextInt(10)); 
    这样也能获得一定范围内的随机数!
      

  18.   

    种子是用于决定随机性的,有种子随机性会大点。而产生的数,与种子无关,与nextIntXXX()中的范围有关!
      

  19.   

    import java.util.*;
    public class code {

       public static void main(String[] args)
       {
       Random rand=new Random();
            int[] a=new int[10];
            for(int i=0;i<10;i++){
            a[i]=(int) (rand.nextInt(100));//数组内容为99以内的随机数      }
            
              Arrays.sort(a);
             for(int i=0;i<10;i++){
            System.out.println("第"+(i+1)+"个数为:"+a[i]+"   "+"序号为:"+(i+1));      }
              
       }}
      

  20.   

    21楼的同学,你搞错了吧,7楼是对的
     l = rand1.nextInt(100);
     j = rand1.nextInt(100);
     k = rand1.nextInt(100);
    这里搞错了,你
      

  21.   

               Random rand = new Random();
                int num1 = rand.Next(1, 4);//1到4随机数
                Console.WriteLine(num1);
      

  22.   

    看thinking in java的时候遇到的,貌似种子数为47的时候,rand.nextInt(100)的结果都是58.和书上的一样,这也叫产生随机数??