Вот лучший способ сгенерировать 3 случайных числа и преобразовать их в шестнадцатеричную строку:
let red = Int.random(in: 0...255)
let green = Int.random(in: 0...255)
let blue = Int.random(in: 0...255)
let hex = String(format:"%02X%02X%02X", red, green, blue)
Причина, по которой ваш код не работает, состоит в том, что ваши числа находятся в диапазоне CGFloat
От 0,0 до 1,0. Но ваш формат строки обрабатывает их как Int
значения.
Кроме того, использование drand48
требует, чтобы вы сначала заполнили их.