创建随机字符串来表示 RGB 颜色
Creating random string to represent RGB color
假设我需要生成随机字符串来表示 RGB 颜色。该字符串由 #
和 6 个十六进制数字组成:例如#ff0000
或#cafe00
.
我正在用 random data generator 这样做:
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]
}
你会如何改进它?
由于有0到255的三个范围,每个范围都用0xff
的最大值表示,并且它们都连接在一个值中,我们可以直接取[=12=范围内的随机值] 并生成结果字符串:
implicit val arbitraryString: Arbitrary[String] = Arbitrary {
"#" + Gen.choose(0, 0xffffff).toHexString
}
没有第 3 方库。
"#%06x".format(scala.util.Random.nextInt(1<<24))
假设我需要生成随机字符串来表示 RGB 颜色。该字符串由 #
和 6 个十六进制数字组成:例如#ff0000
或#cafe00
.
我正在用 random data generator 这样做:
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]
}
你会如何改进它?
由于有0到255的三个范围,每个范围都用0xff
的最大值表示,并且它们都连接在一个值中,我们可以直接取[=12=范围内的随机值] 并生成结果字符串:
implicit val arbitraryString: Arbitrary[String] = Arbitrary {
"#" + Gen.choose(0, 0xffffff).toHexString
}
没有第 3 方库。
"#%06x".format(scala.util.Random.nextInt(1<<24))