Создание случайной строки для представления цвета RGB - PullRequest
0 голосов
/ 05 июня 2018

Предположим, мне нужно сгенерировать случайную строку для представления цвета 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]
}

Как бы вы улучшили это?

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Без сторонних библиотек.

"#%06x".format(scala.util.Random.nextInt(1<<24))
0 голосов
/ 05 июня 2018

Поскольку существует три диапазона от 0 до 255, каждый из которых представлен максимумом 0xff, и все они объединены в одно значение, мы можем напрямую взять случайное значение в диапазоне 0... 0xffffff и получить результирующую строку:

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