Php 随机函数只返回一些可能的颜色

Php 随机函数只返回一些可能的颜色,php,random,hex,Php,Random,Hex,我有一个生成随机颜色的php函数,但我需要截断它,使它只返回浅色(这样文本可以更容易地对比),我如何才能做到这一点?我很难用十六进制来进行比较。以下是我的功能: function randomColor() { $str = '#'; for($i = 0 ; $i < 6 ; $i++) { $randNum = rand(0 , 15); switch ($randNum) { case 10: $randNum

我有一个生成随机颜色的php函数,但我需要截断它,使它只返回浅色(这样文本可以更容易地对比),我如何才能做到这一点?我很难用十六进制来进行比较。以下是我的功能:

function randomColor() {
    $str = '#';
    for($i = 0 ; $i < 6 ; $i++) {
        $randNum = rand(0 , 15);
        switch ($randNum) {
            case 10: $randNum = 'A'; break;
            case 11: $randNum = 'B'; break;
            case 12: $randNum = 'C'; break;
            case 13: $randNum = 'D'; break;
            case 14: $randNum = 'E'; break;
            case 15: $randNum = 'F'; break;
        }
        $str .= $randNum;
    }
    return $str;
}
$color = randomColor();
函数randomColor(){
$str='#';
对于($i=0;$i<6;$i++){
$randNum=rand(0,15);
交换机($randNum){
案例10:$randNum='A';break;
案例11:$randNum='B';break;
案例12:$randNum='C';break;
案例13:$randNum='D';break;
案例14:$randNum='E';break;
案例15:$randNum='F';break;
}
$str.=$randNum;
}
返回$str;
}
$color=randomColor();

0xAA==170,因此您可以选择介于170和255之间的随机数,并将其转换为十六进制

function randomColor() {
    $str = '#';
    for($i = 0 ; $i < 3 ; $i++) {
        $str .= dechex( rand(170 , 255) );
    }
    return $str;
}
函数randomColor(){
$str='#';
对于($i=0;$i<3;$i++){
$str.=dechex(170255兰特);
}
返回$str;
}

0xAA==170,因此您可以选择介于170和255之间的随机数,并将其转换为十六进制

function randomColor() {
    $str = '#';
    for($i = 0 ; $i < 3 ; $i++) {
        $str .= dechex( rand(170 , 255) );
    }
    return $str;
}
函数randomColor(){
$str='#';
对于($i=0;$i<3;$i++){
$str.=dechex(170255兰特);
}
返回$str;
}

浅色的十六进制值较高(#FFFFFF=白色)

你会更好地生成三种颜色,而不是6个单独的部分,因此你生成一个红色,绿色和蓝色的组成部分。此外,您还可以使用
dechex()
将十进制转换为十六进制,并摆脱难看的
开关
结构

您可以在
rand()
中为较浅的颜色设置一个大于0的最小值,或者同样地将最大值降低,使其更暗

function randomColor ($minVal = 0, $maxVal = 255)
{

    // Make sure the parameters will result in valid colours
    $minVal = $minVal < 0 || $minVal > 255 ? 0 : $minVal;
    $maxVal = $maxVal < 0 || $maxVal > 255 ? 255 : $maxVal;

    // Generate 3 values
    $r = mt_rand($minVal, $maxVal);
    $g = mt_rand($minVal, $maxVal);
    $b = mt_rand($minVal, $maxVal);

    // Return a hex colour ID string
    return sprintf('#%02X%02X%02X', $r, $g, $b);

}
函数randomColor($minVal=0,$maxVal=255) { //确保参数将产生有效的颜色 $minVal=$minVal<0 | |$minVal>255?0:$minVal; $maxVal=$maxVal<0 | |$maxVal>255?255:$maxVal; //生成3个值 $r=mt_rand($minVal,$maxVal); $g=mt_rand($minVal,$maxVal); $b=百万兰特($minVal,$maxVal); //返回十六进制颜色ID字符串 返回sprintf(“#%02X%02X%02X',$r,$g,$b); }
因此,您可以调用例如
randomColor(150255)
以获得较浅的颜色,或
randomColor(0100)
以获得较深的颜色。

浅色的十六进制值较高(#FFFFFF=white)

你会更好地生成三种颜色,而不是6个单独的部分,因此你生成一个红色,绿色和蓝色的组成部分。此外,您还可以使用
dechex()
将十进制转换为十六进制,并摆脱难看的
开关
结构

您可以在
rand()
中为较浅的颜色设置一个大于0的最小值,或者同样地将最大值降低,使其更暗

function randomColor ($minVal = 0, $maxVal = 255)
{

    // Make sure the parameters will result in valid colours
    $minVal = $minVal < 0 || $minVal > 255 ? 0 : $minVal;
    $maxVal = $maxVal < 0 || $maxVal > 255 ? 255 : $maxVal;

    // Generate 3 values
    $r = mt_rand($minVal, $maxVal);
    $g = mt_rand($minVal, $maxVal);
    $b = mt_rand($minVal, $maxVal);

    // Return a hex colour ID string
    return sprintf('#%02X%02X%02X', $r, $g, $b);

}
函数randomColor($minVal=0,$maxVal=255) { //确保参数将产生有效的颜色 $minVal=$minVal<0 | |$minVal>255?0:$minVal; $maxVal=$maxVal<0 | |$maxVal>255?255:$maxVal; //生成3个值 $r=mt_rand($minVal,$maxVal); $g=mt_rand($minVal,$maxVal); $b=百万兰特($minVal,$maxVal); //返回十六进制颜色ID字符串 返回sprintf(“#%02X%02X%02X',$r,$g,$b); }
因此,您可以调用例如
randomColor(150255)
来获得较浅的颜色,或者
randomColor(0100)
来获得较深的颜色。

也许这个:可以帮助您。也许这个:可以帮助您。@George根据OP的问题,他似乎可以使用有限的浅色。从RGB调色板中可用的所有可能的灯光颜色中获得随机颜色可能不是这里的目标。(好吧,我刚才回复的评论已经被删除了,但我想我还是把它留在这里。)@George根据OP的问题,他似乎可以接受一组有限的浅色。从RGB调色板中可用的所有可能的灯光颜色中获得随机颜色可能不是这里的目标。(好的,我回复的评论已经被删除了,但我想我还是把它留在这里。)