What are some best practices for weighting the probability of certain elements appearing more frequently in a randomized output in PHP?

When generating a randomized output in PHP, you may want certain elements to appear more frequently than others based on their probability. One way to achieve this is by implementing weighted probabilities. This involves assigning weights to each element, which determine the likelihood of it being chosen during random selection. By adjusting the weights accordingly, you can control the distribution of elements in the output.

function weighted_random($values, $weights){
    $count = count($values);
    $total_weight = array_sum($weights);
    $rand = mt_rand(1, $total_weight);
    
    for($i = 0; $i < $count; $i++){
        $rand -= $weights[$i];
        if($rand <= 0){
            return $values[$i];
        }
    }
}

// Example of using weighted_random function
$values = ['A', 'B', 'C'];
$weights = [1, 2, 3]; // B has twice the chance of appearing compared to A, and C has three times the chance of appearing compared to A

$random_element = weighted_random($values, $weights);
echo $random_element;