Random.Next()总是给出相同的结果

use*_*290 3 .net random c#-4.0

可能重复:
随机数生成器不按我计划的方式工作(C#)

我在基本的C#编程方面经验丰富,目前正在制作Die roller.此应用程序最多可以掷四个骰子.我遇到的问题是骰子总能产生相同的结果.我使用一种方法,其中随机数生成器生成一到六的数字,然后选择适当的图片.我为每个图像框重复下面的方法,因为允许用户输入他们想要掷骰子的数量.我的问题是骰子每次都会生成相同的图片.我究竟做错了什么?

    public Image displaypic(PictureBox box)
    {
        string picchoice;
        int number;

        Image picture = box.Image;

        //Prevents Redundant Images
        Image displaying = box.Image;
        do
        {
            //picks a die to display     
            Random rand = new Random();
            number = rand.Next(1, 7);

            picchoice = number.ToString();

            //select an image from the image selection method
            picture = diepic(picture, picchoice);

        }
        while (picture == displaying);

        //return image
        return picture;
  }
Run Code Online (Sandbox Code Playgroud)

Kyl*_*man 8

随机数不是真正随机的(它们被称为伪随机) - 它们是基于预定算法选择的,该算法使用"种子值"来选择数字.默认情况下,这是DateTime.Now.Ticks

您的应用程序运行速度非常快,以至于它为每个实例使用相同的种子Random.您可以通过在循环外实例化Random对象来解决此问题:

Random rand = new Random();
do
{
    //picks a die to display     
    number = rand.Next(1, 7);

    picchoice = number.ToString();

    //select an image from the image selection method
    picture = diepic(picture, picchoice);

}
while (picture == displaying);
Run Code Online (Sandbox Code Playgroud)

有关此内容的更多信息,请参阅此处的"备注"部分:http: //msdn.microsoft.com/en-us/library/ctssatww.aspx