我有一个列表,它包含了我图像中黑色像素的坐标(x,y)。如何随机访问我的列表元素的百分比?
List<Point> blackPixels = new List<Point>();
难道你不知道我可以如何随意改变黑色像素的颜色为白色的特定比例吗?即将80%的黑色像素变成白色?非常感谢
我有一个列表,它包含了我图像中黑色像素的坐标(x,y)。如何随机访问我的列表元素的百分比?
List<Point> blackPixels = new List<Point>();
难道你不知道我可以如何随意改变黑色像素的颜色为白色的特定比例吗?即将80%的黑色像素变成白色?非常感谢
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);
}
谢谢你的答案,这个函数实际上困惑我每次随机创建一个整数在0到99之间,它检查是否超过80。这是否意味着它将黑色像素的80%变成白色? – CowBoy
是否将每个点以80%的概率变成白色,与将80%的点变成白色相同?我会说它很接近,但可能会有所不同。 – user995219
统计是。 –
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
}
}
希望我帮了忙!
-1:每次通过循环时不要创建一个新的Random();没有显示如何使用随机数获得80%的概率。 (-1自删除后编辑) – TypeIA
新随机是外foreach ... –
正如你大概了解,我刚刚按下我的输入提前 –
变化'blackPixels.Count * 0.8'像素:) –