每次new Random()是一样的,应该这样
Random rand = new Random();
Adaptee adaptee = new Adaptee(rand);
Adaptee adaptee2 = new Adaptee(rand);

解决方案 »

  1.   

     new Random().Next(); 主要是这个为啥产生相同的问题吧?  因为这个随机数其实只是伪随机,并不是真正的随机,在产生随机时,会根据种子来进行随机,上面的两行代码由于时间间隔比较小,所以种子应该是相同的,所以产生的随机数一样···你可以看看随机数的原理,或者在那两行代码的中间让进程停一下,加上System.Threading.Thread.Sleep(1);,这样就不一样了
      

  2.   

    应该是这个问题但是System.Threading.Thread.Sleep(1);这个太快了,应该看不出效果System.Threading.Thread.Sleep(1000);加个一秒看看
    Adaptee adaptee = new Adaptee();
    System.Threading.Thread.Sleep(1000);
    Adaptee adaptee2 = new Adaptee();
    Console.WriteLine(adaptee.Code);
    Console.WriteLine(adaptee2.Code);
      

  3.   

    1楼的方法可行,你给你的类里加个构造函数和私有字段:
    public class Adaptee
     {private Random random;public Adaptee(Random random)
    {
         this.random=random;
    }
     public int Code { get { return random.Next(); } } }然后就可以:
    Random rand = new Random();
     Adaptee adaptee = new Adaptee(rand);
     Adaptee adaptee2 = new Adaptee(rand);
    Console.WriteLine(adaptee.Code);
     Console.WriteLine(adaptee2.Code);