我在一个方法中调用一个随机函数,但他的值都是想同的,不知道是不是BUG  如下int num1,num2
private void getNum()
{
   num1 = returnNum();
   num2 = returnNum();
}int returnNum()
{
   Random rd = new Random();
   return rd.next(1,35);
}
这里num1与num2的值始终是一样的,好像和JAVASCRIPT做网页的时候是不会出现这样的问题.请问这是C#的BUG吗?

解决方案 »

  1.   

    调用两个会是一样的,没劲.连JAVASCRIPT都不如.你试一下下面的代码看显示什么结果.  两个不同的值.
    <html>
    <script language ="javascript">function getNum(max)
    {
    var i;
    i = Math.round(Math.random()*max);
    return i;
    }</script><script language = "javascript">
    alert(getNum(34));
    alert(getNum(34));
    </script>
    <body></body>
    </html>
      

  2.   

    得到的是伪随机数
    int returnNum()
    {
    Random rd = new Random(Guid.NewGuid().GetHashCode());
    return rd.Next(1,35);
    }
      

  3.   

    Random r = new Random(unchecked((int)DateTime.Now.Ticks));
    这样,你再打印r.Next();结果就不同了。
      

  4.   

    Random是用系统时间做默认种子的,程序执行的非常快,在单位时间内时间被看做相同的,所以得到的结果是一样的,但如果每次产生种子前随机SLEEP一会,结果就不一样了
      

  5.   

    高手终于出现了,明白了谢谢skinny8306 752(凉开水)  
    http://blog.sina.com.cn/u/446ff3c601000586
      

  6.   

    你打断点测试
    没有问题
    int returnNum()
    {
       Random rd = new Random();
       return rd.Next(1,35);
    } private void button1_Click(object sender, EventArgs e)
            {
                textBox1.Text = returnNum().ToString();
                textBox2.Text = returnNum().ToString();
            }
    两个结果不一样