繁体   English   中英

创建随机字符串以表示RGB颜色

[英]Creating random string to represent RGB color

假设我需要生成随机字符串来表示RGB颜色。 该字符串包含#和6个十六进制数字:例如#ff0000#cafe00

我正在使用像这样的随机数据生成器来做到这一点:

import com.danielasfregola.randomdatagenerator.RandomDataGenerator._
import org.scalacheck.{Arbitrary, Gen}

def randomRGB(): String = {

  implicit val arbitraryString: Arbitrary[String] = Arbitrary {
    for {
      r <- Gen.choose(0, 255)
      g <- Gen.choose(0, 255)
      b <- Gen.choose(0, 255)
    } yield "#" + r.toHexString + g.toHexString + b.toHexString
  }

  random[String]
}

您将如何改善它?

没有第3方库。

"#%06x".format(scala.util.Random.nextInt(1<<24))

由于存在0到255的三个范围,每个范围都以最大值0xff表示,并且它们全部串联在一个值中,因此我们可以直接采用0... 0xffffff范围内的随机值并生成结果字符串:

implicit val arbitraryString: Arbitrary[String] = Arbitrary {
  "#" + Gen.choose(0, 0xffffff).toHexString
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM