int sum;
               Random rand = new Random(unchecked((int)DateTime.Now.Ticks));
               int myValue1 = (rand.Next( )) % 6 + 1;
               int myValue2 = (rand.Next( )) % 6 + 1;
               sum = myValue1 + myValue2;
为什么sum的值总是0啊,,,,,,,

解决方案 »

  1.   

                  Random rand = new Random(unchecked((int)DateTime.Now.Ticks)); 
    这句不要这样写
    改成                Random rand = new Random(Guid.NewGuid().GetHashCode());这样每次就不一样了
      

  2.   

    rand.Next( ) 加个范围试试
      

  3.   

    这样写是没错的...DateTime.Now.Ticks做初始化种子是没问题的...问题出在别的地方...单这几句是没有问题的...
      

  4.   

    你是不是用了多线程?系统时钟可能没有足够的分辨率导致产生相同的种子值...下面这个MSDN的例子使用右移位运算符为任意数量的 Random 对象(可用同一时间值初始化该对象)生成不同的种子值...int randomInstancesToCreate = 4;
    Random[] randomEngines = new Random[randomInstancesToCreate];
    for (int ctr = 0; ctr < randomInstancesToCreate; ctr++)
    {
       randomEngines[ctr] = new Random(unchecked((int) (DateTime.Now.Ticks >> ctr)));
    }但是即使是相同的种子值也不太可能出现“sum的值总是0”这种情况...你还是检查下其他地方的代码吧...
      

  5.   

    Random.Next()返回非负整数,那么myValue1、myValue2肯定>=1,sum怎么会是0呢?