柚子Nan--回归原点

Everything can be as easy as you like or as complex as you need.
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

关于随机数的一个奇怪问题

Posted on 2005-01-25 11:40  柚子Nan  阅读(2730)  评论(14)    收藏  举报

今天上午同事遇到一个问题,他要生成一个任意位数的随机数字和大写字母的组合,一个很简单的问题。同事的代码如下:

private string GetRandomString(int nDigit)

{

    //将数字和大写字母组成一个字符串

    string[] arySource={"0","1","2","3","4","5","6","7","8","9"

                       ,"A","B","C","D","E","F","G","H","I","J","K","L"

                   ,"M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"};

    string strResult = "";

    string strTemp = "";

    for (int i = 0; i < nDigit; i++)

    {

        strTemp = arySource[new Random().Next(36)];

        strResult += strTemp;

    }

 

    return strResult;

}


然后在另外一个按钮的事件里

private void Button1_Click(object sender, System.EventArgs e)

{

    TextBox1.Text = GetRandomString (4);

}

 

如果运行程序,总是得到4位相同的数字或者字母。

但是,如果在for循环内部设置了断点,然后F9单步跟踪,就产生了4位不同的数字或者字母。

就是这样一个结论

如果F5运行程序就得到4相同的串

如果单步调试F9 就得到随机的串

试试看?