如何在Python随机颜色生成代码中排除黑色?
解决方案
你的现有代码会生成8种等概率的RGB组合,每个通道取值为0或0.25,其中黑色对应的就是三个通道全为0的情况,你可以通过以下两种方式调整:
方案1:生成后校验重抽(逻辑最简单,易理解)
生成颜色后判断是否为全黑,如果是就重新生成,直到拿到符合要求的颜色:
while True: background_red = 0.25 * random.randrange(0, 2) background_green = 0.25 * random.randrange(0, 2) background_blue = 0.25 * random.randrange(0, 2) # 只要不是三个通道全为0就退出循环 if background_red + background_green + background_blue != 0: break
方案2:直接排除全黑选项(效率更高,无重复生成开销)
总共有7种合法颜色(排除全黑),你可以先随机取1~7的整数,再拆解成三位二进制位分别对应三个通道的开关:
# 随机生成1-7的整数,对应排除全0的三位二进制数 color_code = random.randrange(1, 8) background_red = 0.25 * ((color_code >> 2) & 1) background_green = 0.25 * ((color_code >> 1) & 1) background_blue = 0.25 * (color_code & 1)
内容的提问来源于stack exchange,提问作者prongs
相关产品推荐
相关产品推荐

