C#随机返回相同的值

时间:2013-09-07 17:42:02

标签: c# random

我只创建一个随机实例,但即便如此,随机数也是一样。

       int x, y;
        Random random = new Random();
        // Loop through the images pixels to reset color. 
        for (x = 0; x < image1.Width; x++)
        {
            for (y = 0; y < image1.Height; y++)
            {
                int randomNumber = random.Next(1, 2);
                if (randomNumber != 1) continue;
                Color pixelColor = image1.GetPixel(x, y);
                Color newColor = Color.FromArgb(255, 255, 255);
                image1.SetPixel(x, y, newColor);
            }
        }

1 个答案:

答案 0 :(得分:9)

您每次都获得相同的号码(1),因为您使用Random.Next()minValue = 1致电maxValue = 2

Random.Next Method (Int32, Int32)

  

minValue(最小值)

     

返回的随机数的包含下限。

     

包括maxValue

     

返回的随机数的独占上限。 maxValue必须   大于或等于minValue。

致电Random.Next(1, 2)将始终返回1

这并不是100%清楚你想要达到的目标,但如果你只想改变50%的颜色,你应该做以下事情:

for (x = 0; x < image1.Width; x++)
{
    for (y = 0; y < image1.Height; y++)
    {
        if (random.Next() % 2 != 1) continue;
        Color pixelColor = image1.GetPixel(x, y);
        Color newColor = Color.FromArgb(255, 255, 255);
        image1.SetPixel(x, y, newColor);
    }
}