3v4l.org

run code in 300+ PHP versions simultaneously
<?php function weight($array) { $sum = array_sum($array); $rnd = mt_rand(0,$sum); foreach($array as $k=>$v) { if($rnd <= $v) { return $k; } $rnd = $rnd - $v; } } $weights = [100, 200, 1000]; $values = array_fill(0, count($weights), 0); for ($x = 0; $x < 1000; $x++) { $w = weight($weights); $values[$w] = $values[$w] + 1; } var_dump($values);

preferences:
30.64 ms | 402 KiB | 5 Q