main() 

int a,b; 
Random rnd1=new Random(); 
a=(int)(rnd1.nextdouble()*10); 
b=(int)(rnd1.nextdouble()*10); 
Console.WriteLine("a="+a+",b="+b); 

解决方案 »

  1.   

    // 不要每次都初始化,因为默认是以计算机时钟为随机数种子的。
    // 而你的计算机太快了,两次初始化会取到同样的种子,造成产生的随机数一样。static void Main() 

      Random rnd1 = new Random();  // 只需初始化一次
      int a = (int)(rnd1.NextDouble()*10); 
      int b = (int)(rnd1.NextDouble()*10); 
      Console.WriteLine("a = {0}, b = {1}", a, b); 
    }
      

  2.   

    Random.Next()                            // 返回非负随机整数(Int32)。
    Random.Next(int maxValue)                // 返回一个小于所指定最大值的非负随机整数。
    Random.Next(int minValue, int maxValue)  // 返回一个指定范围内的随机整数(minValue≤返回值<maxValue)。
      

  3.   

    谢谢
    再请教一下哦
    main() 

    int a,b; 
    Random rnd1=new Random(); 
    a=(int)(rnd1.nextdouble()*10); 
    Random rnd2=new Random();
    b=(int)(rnd2.nextdouble()*10); 
    Console.WriteLine("a="+a+",b="+b); 

    a和b的结果也是完全一样的
    另外请教楼上的高手为什么只初始化一次就可以了呀
      

  4.   

    赞成楼上的,用一个Random对象来做
      

  5.   

    main() 

    int a,b; 
    Random rnd1=new Random(); 
    a=(int)(rnd1.nextdouble()*10); 
    Random rnd2=new Random(); 
    b=(int)(rnd2.nextdouble()*10); 
    Console.WriteLine("a="+a+",b="+b);