0

random のインスタンスを 1 つだけ作成していますが、それでも乱数は同じです。

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

1 に答える 1

9

and で呼び出して1いるため、毎回同じ番号 ( ) を取得しています。Random.Next()minValue = 1maxValue = 2

Random.Next メソッド (Int32、Int32)

最小値

返される乱数の包括的な下限。

最大値

返される乱数の排他的な上限。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);
    }
}
于 2013-09-07T17:45:52.440 に答える