【问题标题】:generate random number between two numbers [duplicate]在两个数字之间生成随机数[重复]
【发布时间】:2014-12-19 13:40:42
【问题描述】:

我正在编写一个生成二进制(黑白)图像的程序。白色的 ARGB(Alpha,Red,Green,Blue) 是 (0,255,255,255) 和黑色的 (0,0,0,0) 。所以我使用Random 数字来生成二进制位图

int a = rnd.Next(256);
int r = rnd.Next(256);
int g = rnd.Next(256);
int b = rnd.Next(256);

但是有了这个数字范围,它会生成一个彩色图像,所以我只需要 0 或 255 的随机数,它们之间没有任何关系。请记住,它是二进制而不是灰度图像。

【问题讨论】:

  • 生成一个介于 0 和 2 之间的随机整数(即 0 或 1)并乘以 255。
  • 生成0到1之间的随机数,为0则为0,为1则为255!!
  • 官方说这两个值都是透明的,透明的白色和透明的黑色:)。你不是说(255,255,255,255)(255,0,0,0)吗?

标签: c#


【解决方案1】:

最简单的方法是:

int a = 255;
int r = rnd.Next(2) * 255;
int g = r;
int b = r;

或者您可以通过以下方式实现相同的目的:

Color color = rnd.Next(2) == 0 ? Color.Black : Color.White;

【讨论】:

  • 第一个代码将为您提供八种不同颜色的变体。您应该得到一个随机数并用于所有三个组件。
  • @Guffa 哎呀,你是对的。修复。谢谢。
  • 再次修复它。您将b 分配给b。 :)
  • @Guffa 再次非常感谢您。我太马虎了,真丢脸!
【解决方案2】:

谢谢大家 :) 这种方式对我有用:-

for (int y = 0; y < height; y++)
{
    for (int x = 0; x < width; x++)
    {
        pixel_color = rnd.Next(0, 2);
        if (pixel_color == 0)
        {
            r = 0;
            g = 0;
            b = 0;
        }
        else
        {
            r = 255;
            g = 255;
            b = 255;
        }
        bmp.SetPixel(x, y, Color.FromArgb(r, g, b));
    }
}

【讨论】:

  • 您应该评论/投票/接受现有答案,而不是发布基本上重复的答案。至少您应该显示更新位图的原始位,因为SetPixel 是您可以使用的最慢的功能之一。
猜你喜欢
  • 1970-01-01
  • 2014-03-20
  • 1970-01-01
  • 2014-04-17
  • 1970-01-01
  • 2019-10-18
  • 2011-07-13
  • 2014-10-02
相关资源
最近更新 更多