2013-09-07 2 views
0

Я создаю только один случай случайного, но тем не менее случайное число одно и то же.C# Случайное возвращение того же значения

 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); 
      } 
     } 
+0

Что вы имеете в виду, что номер один и тот же? Вы всегда получаете одинаковое значение? Или последующие прогоны всегда дают точно такой же результат? –

ответ

9

Вы получаете тот же номер (1) каждый раз, потому что вы звоните Random.Next() с minValue = 1 и maxValue = 2:

Random.Next Method (Int32, Int32)

MinValue

В включительно lowe r из возвращаемого случайного числа.

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); 
    } 
} 
+0

Спасибо, мне это не хватало внимания – Aman

+0

@Aman не забудьте отметить ответ как ответ! –

+0

Здесь я просто тестировал случайность случайного создания изображения, где каждый пиксель whoul был случайным образом черным или белым, как здесь http://www.random.org/bitmaps/ – Aman

Смежные вопросы