可能重复:
Random number generator not working the way I had planned (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;
}
答案 0 :(得分: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/en-us/library/ctssatww.aspx