I'm trying to find a way to generate random shades of an RGB color.
As you can see in the snippet, most shades are pretty ok but there are some that are completely irrelevant visually. Is there a way of improving this ?
let resultsContainer = document.getElementById('results')
let original = { r: 244, g: 102, b: 255 } // generate random shades of this color
let max = 100
let min = 100
let results = []
document.getElementById('original').style.background = `rgb(${original.r}, ${original.g}, ${original.b})`
function randomBetween(min, max) {
min = min < 0 ? 0 : min
max = max > 255 ? 255 : max
return min + Math.floor(Math.random() * (max - min + 1))
}
while (results.length < 10) {
results.push({
r: randomBetween(original.r-min, original.r+max),
g: randomBetween(original.g-min, original.g+max),
b: randomBetween(original.b-min, original.b+max),
})
}
results.forEach(({ r, g, b }) => {
let result = document.createElement('div')
result.className = 'result'
result.style.background = `rgb(${r}, ${g}, ${b})`
resultsContainer.appendChild(result)
})
.result {
float:left;
width: 50px;
height: 50px;
}
<div id="original" class="result"></div>
<br>
<br>
<br>
<br>
<div id="results"></div>
- My randomBetween() method is inspired by https://stackoverflow.com/a/23095771/2272048