Random.Next()总是返回相同的结果

3

可能重复:
C#中随机数生成器未按计划工作

我有基础的C#编程经验,目前正在制作一个骰子滚动程序。此应用程序最多可以掷四个骰子。我的问题是骰子总是产生相同的结果。我使用了一种方法,其中随机数生成器生成从一到六的数字,然后选择相应的图像。我在每个图像框下面重复该方法,因为用户可以输入他们想要掷多少个骰子。我的问题是骰子每次都生成相同的图片。我做错了什么?

    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;
  }
1个回答

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);

想要获取更多关于此的信息,请参考此处的“备注”部分:http://msdn.microsoft.com/zh-cn/library/ctssatww.aspx


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接