<?php
/**
* @param array $items
* @param array $weights
*
* @return mixed
*/
function random_weighted(array $items, array $weights) {
$weight = 0;
$return = current($items);
for ($i = 0, $n = count($items); $i < $n; $i++) {
$random = mt_rand(0, $weights[$i] + $weight);
if ($random >= $weight) {
$return = $items[$i];
}
$weight += $weights[$i];
}
return $return;
}
$items = ['a', 'b', 'c', 'd'];
$weights = [0, 10, 10, 10];
$i = 100;
$results = ['a' => 0, 'b' => 0, 'c' => 0, 'd' => 0];
do {
$x = random_weighted($items, $weights);
$results[$x]++;
} while (--$i);
var_dump($results);
- Output for 5.6.15, 5.6.17, 7.4.0
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(32)
["d"]=>
int(32)
}
- Output for 7.3.12
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(44)
["d"]=>
int(26)
}
- Output for 7.3.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(29)
["c"]=>
int(32)
["d"]=>
int(39)
}
- Output for 7.3.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(32)
["d"]=>
int(33)
}
- Output for 7.3.9
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(32)
["d"]=>
int(37)
}
- Output for 5.5.9, 7.3.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(35)
["d"]=>
int(38)
}
- Output for 7.3.7
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(37)
["d"]=>
int(36)
}
- Output for 7.3.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(20)
["d"]=>
int(45)
}
- Output for 7.3.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(37)
["d"]=>
int(35)
}
- Output for 7.3.4
- array(4) {
["a"]=>
int(0)
["b"]=>
int(40)
["c"]=>
int(34)
["d"]=>
int(26)
}
- Output for 5.5.15, 7.3.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(36)
["d"]=>
int(31)
}
- Output for 7.3.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(46)
["d"]=>
int(37)
}
- Output for 7.3.1
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(37)
["d"]=>
int(31)
}
- Output for 7.1.21, 7.3.0
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(39)
["d"]=>
int(36)
}
- Output for 7.2.25
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(41)
["d"]=>
int(29)
}
- Output for 5.6.6, 7.0.0 - 7.0.1, 7.2.24
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(33)
["d"]=>
int(31)
}
- Output for 7.2.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(42)
["d"]=>
int(31)
}
- Output for 5.5.7, 7.2.22
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(34)
["d"]=>
int(38)
}
- Output for 7.2.21
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(31)
["d"]=>
int(36)
}
- Output for 5.6.21, 7.2.8, 7.2.20
- array(4) {
["a"]=>
int(0)
["b"]=>
int(34)
["c"]=>
int(31)
["d"]=>
int(35)
}
- Output for 7.2.19
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(28)
["d"]=>
int(40)
}
- Output for 5.6.16, 7.0.29, 7.2.18
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(40)
["d"]=>
int(33)
}
- Output for 7.2.17
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(43)
["d"]=>
int(29)
}
- Output for 5.5.11, 7.2.13
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(38)
["d"]=>
int(32)
}
- Output for 7.2.12
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(29)
["d"]=>
int(41)
}
- Output for 7.2.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(34)
["d"]=>
int(31)
}
- Output for 7.2.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(38)
["c"]=>
int(29)
["d"]=>
int(33)
}
- Output for 7.2.9
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(27)
["d"]=>
int(46)
}
- Output for 5.6.3, 7.2.7
- array(4) {
["a"]=>
int(0)
["b"]=>
int(38)
["c"]=>
int(25)
["d"]=>
int(37)
}
- Output for 7.1.12, 7.2.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(35)
["d"]=>
int(29)
}
- Output for 7.2.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(24)
["c"]=>
int(36)
["d"]=>
int(40)
}
- Output for 7.2.4
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(42)
["d"]=>
int(38)
}
- Output for 7.0.5, 7.1.22, 7.2.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(33)
["d"]=>
int(36)
}
- Output for 7.2.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(35)
["d"]=>
int(35)
}
- Output for 5.5.12, 5.6.33, 7.2.1
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(36)
["d"]=>
int(37)
}
- Output for 7.2.0
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(34)
["d"]=>
int(33)
}
- Output for 5.6.12, 7.1.33
- array(4) {
["a"]=>
int(0)
["b"]=>
int(38)
["c"]=>
int(27)
["d"]=>
int(35)
}
- Output for 5.6.20, 7.0.23, 7.1.32
- array(4) {
["a"]=>
int(0)
["b"]=>
int(29)
["c"]=>
int(37)
["d"]=>
int(34)
}
- Output for 5.6.28, 7.1.31
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(33)
["d"]=>
int(32)
}
- Output for 7.1.30
- array(4) {
["a"]=>
int(0)
["b"]=>
int(39)
["c"]=>
int(22)
["d"]=>
int(39)
}
- Output for 7.1.29
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(32)
["d"]=>
int(38)
}
- Output for 7.1.28
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(42)
["d"]=>
int(33)
}
- Output for 7.1.27
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(44)
["d"]=>
int(25)
}
- Output for 5.5.24, 7.1.26
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(28)
["d"]=>
int(36)
}
- Output for 7.1.25
- array(4) {
["a"]=>
int(0)
["b"]=>
int(26)
["c"]=>
int(36)
["d"]=>
int(38)
}
- Output for 7.1.24
- array(4) {
["a"]=>
int(0)
["b"]=>
int(37)
["c"]=>
int(25)
["d"]=>
int(38)
}
- Output for 5.5.16, 7.1.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(37)
["c"]=>
int(35)
["d"]=>
int(28)
}
- Output for 7.1.20
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(34)
["d"]=>
int(41)
}
- Output for 5.6.14, 7.1.19
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(37)
["d"]=>
int(32)
}
- Output for 7.1.18
- array(4) {
["a"]=>
int(0)
["b"]=>
int(39)
["c"]=>
int(26)
["d"]=>
int(35)
}
- Output for 7.1.17
- array(4) {
["a"]=>
int(0)
["b"]=>
int(21)
["c"]=>
int(37)
["d"]=>
int(42)
}
- Output for 7.1.16
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(41)
["d"]=>
int(34)
}
- Output for 7.1.15
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(36)
["d"]=>
int(34)
}
- Output for 5.5.19, 7.0.11, 7.1.14
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(35)
["d"]=>
int(40)
}
- Output for 5.6.0, 7.1.13
- array(4) {
["a"]=>
int(0)
["b"]=>
int(37)
["c"]=>
int(29)
["d"]=>
int(34)
}
- Output for 7.1.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(29)
["c"]=>
int(45)
["d"]=>
int(26)
}
- Output for 7.1.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(34)
["d"]=>
int(30)
}
- Output for 5.5.29, 7.1.9
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(30)
["d"]=>
int(35)
}
- Output for 7.1.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(41)
["c"]=>
int(29)
["d"]=>
int(30)
}
- Output for 7.1.7
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(36)
["d"]=>
int(28)
}
- Output for 7.1.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(34)
["d"]=>
int(36)
}
- Output for 7.1.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(40)
["d"]=>
int(25)
}
- Output for 5.6.22, 7.1.4
- array(4) {
["a"]=>
int(0)
["b"]=>
int(29)
["c"]=>
int(33)
["d"]=>
int(38)
}
- Output for 7.1.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(33)
["d"]=>
int(35)
}
- Output for 7.0.22, 7.1.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(30)
["d"]=>
int(42)
}
- Output for 7.1.1
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(36)
["d"]=>
int(39)
}
- Output for 7.1.0
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(34)
["d"]=>
int(39)
}
- Output for 7.0.33
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(30)
["d"]=>
int(37)
}
- Output for 7.0.32
- array(4) {
["a"]=>
int(0)
["b"]=>
int(38)
["c"]=>
int(32)
["d"]=>
int(30)
}
- Output for 7.0.31
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(44)
["d"]=>
int(24)
}
- Output for 7.0.30
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(25)
["d"]=>
int(45)
}
- Output for 7.0.28
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(30)
["d"]=>
int(39)
}
- Output for 7.0.27
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(33)
["d"]=>
int(39)
}
- Output for 7.0.26
- array(4) {
["a"]=>
int(0)
["b"]=>
int(26)
["c"]=>
int(33)
["d"]=>
int(41)
}
- Output for 5.6.1, 7.0.21, 7.0.25
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(32)
["d"]=>
int(41)
}
- Output for 5.5.38, 7.0.13, 7.0.24
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(31)
["d"]=>
int(37)
}
- Output for 5.6.32, 5.6.34, 7.0.15, 7.0.20
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(36)
["d"]=>
int(36)
}
- Output for 7.0.19
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(38)
["d"]=>
int(26)
}
- Output for 5.6.37, 7.0.18
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(37)
["d"]=>
int(33)
}
- Output for 7.0.17
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(27)
["d"]=>
int(41)
}
- Output for 7.0.16
- array(4) {
["a"]=>
int(0)
["b"]=>
int(26)
["c"]=>
int(32)
["d"]=>
int(42)
}
- Output for 7.0.14
- array(4) {
["a"]=>
int(0)
["b"]=>
int(34)
["c"]=>
int(36)
["d"]=>
int(30)
}
- Output for 5.5.0, 5.5.33, 5.6.31, 7.0.12
- array(4) {
["a"]=>
int(0)
["b"]=>
int(34)
["c"]=>
int(34)
["d"]=>
int(32)
}
- Output for 7.0.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(41)
["c"]=>
int(21)
["d"]=>
int(38)
}
- Output for 7.0.9
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(25)
["d"]=>
int(48)
}
- Output for 5.6.8, 7.0.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(27)
["d"]=>
int(42)
}
- Output for 7.0.7
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(42)
["d"]=>
int(28)
}
- Output for 7.0.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(37)
["c"]=>
int(33)
["d"]=>
int(30)
}
- Output for 7.0.4
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(37)
["d"]=>
int(28)
}
- Output for 7.0.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(24)
["d"]=>
int(44)
}
- Output for 7.0.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(30)
["d"]=>
int(34)
}
- Output for 5.6.38
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(27)
["d"]=>
int(38)
}
- Output for 5.6.36
- array(4) {
["a"]=>
int(0)
["b"]=>
int(29)
["c"]=>
int(40)
["d"]=>
int(31)
}
- Output for 5.6.35
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(29)
["d"]=>
int(39)
}
- Output for 5.6.30
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(38)
["d"]=>
int(35)
}
- Output for 5.5.21, 5.6.29
- array(4) {
["a"]=>
int(0)
["b"]=>
int(29)
["c"]=>
int(38)
["d"]=>
int(33)
}
- Output for 5.6.27
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(35)
["d"]=>
int(34)
}
- Output for 5.5.18, 5.6.26
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(36)
["d"]=>
int(32)
}
- Output for 5.6.25
- array(4) {
["a"]=>
int(0)
["b"]=>
int(38)
["c"]=>
int(33)
["d"]=>
int(29)
}
- Output for 5.6.24
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(42)
["d"]=>
int(26)
}
- Output for 5.6.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(39)
["d"]=>
int(26)
}
- Output for 5.6.19
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(22)
["d"]=>
int(47)
}
- Output for 5.6.18
- array(4) {
["a"]=>
int(0)
["b"]=>
int(30)
["c"]=>
int(28)
["d"]=>
int(42)
}
- Output for 5.6.13
- array(4) {
["a"]=>
int(0)
["b"]=>
int(34)
["c"]=>
int(28)
["d"]=>
int(38)
}
- Output for 5.6.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(43)
["d"]=>
int(21)
}
- Output for 5.5.1, 5.6.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(29)
["c"]=>
int(36)
["d"]=>
int(35)
}
- Output for 5.6.9
- array(4) {
["a"]=>
int(0)
["b"]=>
int(39)
["c"]=>
int(29)
["d"]=>
int(32)
}
- Output for 5.6.7
- array(4) {
["a"]=>
int(0)
["b"]=>
int(37)
["c"]=>
int(28)
["d"]=>
int(35)
}
- Output for 5.6.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(32)
["d"]=>
int(35)
}
- Output for 5.6.4
- array(4) {
["a"]=>
int(0)
["b"]=>
int(34)
["c"]=>
int(32)
["d"]=>
int(34)
}
- Output for 5.6.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(22)
["c"]=>
int(41)
["d"]=>
int(37)
}
- Output for 5.5.37
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(50)
["d"]=>
int(31)
}
- Output for 5.5.36
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(40)
["d"]=>
int(27)
}
- Output for 5.5.35
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(35)
["d"]=>
int(37)
}
- Output for 5.5.34
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(37)
["d"]=>
int(27)
}
- Output for 5.5.32
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(26)
["d"]=>
int(41)
}
- Output for 5.5.31
- array(4) {
["a"]=>
int(0)
["b"]=>
int(34)
["c"]=>
int(39)
["d"]=>
int(27)
}
- Output for 5.5.30
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(33)
["d"]=>
int(42)
}
- Output for 5.5.28
- array(4) {
["a"]=>
int(0)
["b"]=>
int(35)
["c"]=>
int(31)
["d"]=>
int(34)
}
- Output for 5.5.27
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(42)
["d"]=>
int(27)
}
- Output for 5.5.26
- array(4) {
["a"]=>
int(0)
["b"]=>
int(32)
["c"]=>
int(38)
["d"]=>
int(30)
}
- Output for 5.5.25
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(27)
["d"]=>
int(37)
}
- Output for 5.5.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(37)
["c"]=>
int(31)
["d"]=>
int(32)
}
- Output for 5.5.22
- array(4) {
["a"]=>
int(0)
["b"]=>
int(29)
["c"]=>
int(35)
["d"]=>
int(36)
}
- Output for 5.5.20
- array(4) {
["a"]=>
int(0)
["b"]=>
int(41)
["c"]=>
int(33)
["d"]=>
int(26)
}
- Output for 5.5.17
- array(4) {
["a"]=>
int(0)
["b"]=>
int(23)
["c"]=>
int(34)
["d"]=>
int(43)
}
- Output for 5.5.14
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(32)
["d"]=>
int(40)
}
- Output for 5.5.13
- array(4) {
["a"]=>
int(0)
["b"]=>
int(36)
["c"]=>
int(31)
["d"]=>
int(33)
}
- Output for 5.5.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(34)
["c"]=>
int(33)
["d"]=>
int(33)
}
- Output for 5.5.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(39)
["c"]=>
int(27)
["d"]=>
int(34)
}
- Output for 5.5.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(36)
["d"]=>
int(44)
}
- Output for 5.5.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(31)
["c"]=>
int(28)
["d"]=>
int(41)
}
- Output for 5.5.4
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(27)
["d"]=>
int(40)
}
- Output for 5.5.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(33)
["c"]=>
int(35)
["d"]=>
int(32)
}
- Output for 5.5.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(24)
["c"]=>
int(37)
["d"]=>
int(39)
}
preferences:
74.21 ms | 609 KiB | 5 Q