如何按百分比随机访问列表元素?

时间:2014-02-13 16:45:10

标签: c# image

我有一个点列表,它们保存着我图像中黑色像素的坐标(x,y)。

List<Point> blackPixels = new List<Point>();

是否有人知道如何将黑色像素的颜色随机改为特定百分比的白色?即将80%的黑色像素变为白色?非常感谢

3 个答案:

答案 0 :(得分:2)

Random rand = new Random();
foreach (Point p in blackPixels) {

   if (rnd.Next(100) < 80) {
     // turn p to white
   }

}

对于列表中的每个元素,它会生成0到99之间的数字,这意味着80%的时间数字将介于0到79之间。这样就可以将80%的像素变为白色。

如果您想要更改完全 80%的像素,您可以采取相反的方式:

var numberOfPixelsToTurn = blackPixels.Count * 0.8
var rand = new Random();

for (int i; i < numberOfPixelsToTurn ; i++) {
  int itemToTurn = rand.Next(blackPixels.Count);
  TurnToWhite(blackPixels[itemToTurn]);
  blackPixels.RemoveAt(itemToTurn);
}

答案 1 :(得分:1)

使用Random课程。迭代每个像素。调用Random。Next(int)方法生成0到100之间的随机整数。如果随机数小于80(产生80%的几率),请将像素更改为白色。

答案 2 :(得分:-1)

Random rnd = new Random();    
for(int x=0;x<blackPixels.Length;x++){

    int randomNumber = rnd.next(100);
    if(randomNumber <= 80){

         blackPixels[x] = // add a white pixel
    }

}

希望我帮忙!