<?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, 1, 1, 1];
$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 7.4.1
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(29)
["d"]=>
int(46)
}
- Output for 5.5.12, 7.3.4, 7.4.0
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(37)
["d"]=>
int(48)
}
- Output for 7.2.18, 7.3.13
- array(4) {
["a"]=>
int(0)
["b"]=>
int(13)
["c"]=>
int(39)
["d"]=>
int(48)
}
- Output for 7.1.15, 7.3.12
- array(4) {
["a"]=>
int(0)
["b"]=>
int(11)
["c"]=>
int(32)
["d"]=>
int(57)
}
- Output for 7.3.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(25)
["d"]=>
int(60)
}
- Output for 7.3.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(27)
["d"]=>
int(53)
}
- Output for 5.6.37, 7.0.1, 7.0.15, 7.3.9
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(31)
["d"]=>
int(50)
}
- Output for 7.3.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(22)
["c"]=>
int(42)
["d"]=>
int(36)
}
- Output for 7.3.7
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(30)
["d"]=>
int(55)
}
- Output for 7.3.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(36)
["d"]=>
int(45)
}
- Output for 7.3.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(28)
["d"]=>
int(54)
}
- Output for 7.1.9, 7.3.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(10)
["c"]=>
int(40)
["d"]=>
int(50)
}
- Output for 7.2.7, 7.3.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(28)
["d"]=>
int(57)
}
- Output for 7.0.18, 7.3.1
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(31)
["d"]=>
int(54)
}
- Output for 7.1.2, 7.3.0
- array(4) {
["a"]=>
int(0)
["b"]=>
int(13)
["c"]=>
int(30)
["d"]=>
int(57)
}
- Output for 7.2.26
- array(4) {
["a"]=>
int(0)
["b"]=>
int(9)
["c"]=>
int(40)
["d"]=>
int(51)
}
- Output for 7.2.25
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(40)
["d"]=>
int(44)
}
- Output for 5.5.6, 7.0.22, 7.2.17, 7.2.24
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(33)
["d"]=>
int(51)
}
- Output for 7.2.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(27)
["d"]=>
int(54)
}
- Output for 7.0.28, 7.2.12, 7.2.22
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(27)
["d"]=>
int(57)
}
- Output for 7.2.21
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(27)
["d"]=>
int(58)
}
- Output for 7.0.21, 7.2.20
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(30)
["d"]=>
int(53)
}
- Output for 7.2.19
- array(4) {
["a"]=>
int(0)
["b"]=>
int(21)
["c"]=>
int(29)
["d"]=>
int(50)
}
- Output for 7.1.20, 7.2.16
- array(4) {
["a"]=>
int(0)
["b"]=>
int(9)
["c"]=>
int(36)
["d"]=>
int(55)
}
- Output for 7.2.13, 7.2.15
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(29)
["d"]=>
int(52)
}
- Output for 7.2.14
- array(4) {
["a"]=>
int(0)
["b"]=>
int(13)
["c"]=>
int(34)
["d"]=>
int(53)
}
- Output for 7.2.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(14)
["c"]=>
int(39)
["d"]=>
int(47)
}
- Output for 7.2.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(32)
["d"]=>
int(51)
}
- Output for 7.2.9
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(26)
["d"]=>
int(56)
}
- Output for 7.2.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(11)
["c"]=>
int(43)
["d"]=>
int(46)
}
- Output for 5.6.9, 5.6.33, 7.2.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(14)
["c"]=>
int(37)
["d"]=>
int(49)
}
- Output for 7.2.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(23)
["c"]=>
int(29)
["d"]=>
int(48)
}
- Output for 7.2.4
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(32)
["d"]=>
int(49)
}
- Output for 5.5.17, 7.2.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(21)
["c"]=>
int(30)
["d"]=>
int(49)
}
- Output for 7.2.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(44)
["d"]=>
int(40)
}
- Output for 7.2.1
- array(4) {
["a"]=>
int(0)
["b"]=>
int(9)
["c"]=>
int(31)
["d"]=>
int(60)
}
- Output for 7.1.7, 7.2.0
- array(4) {
["a"]=>
int(0)
["b"]=>
int(21)
["c"]=>
int(28)
["d"]=>
int(51)
}
- Output for 5.5.25, 7.1.33
- array(4) {
["a"]=>
int(0)
["b"]=>
int(14)
["c"]=>
int(36)
["d"]=>
int(50)
}
- Output for 5.5.2, 7.1.32
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(35)
["d"]=>
int(47)
}
- Output for 5.5.4, 5.5.29, 5.6.2, 7.1.31
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(36)
["d"]=>
int(49)
}
- Output for 5.5.19, 5.5.32, 7.1.30
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(38)
["d"]=>
int(45)
}
- Output for 7.0.32, 7.1.29
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(29)
["d"]=>
int(56)
}
- Output for 5.6.27, 7.1.28
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(37)
["d"]=>
int(47)
}
- Output for 7.1.27
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(25)
["d"]=>
int(58)
}
- Output for 7.1.19, 7.1.26
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(35)
["d"]=>
int(46)
}
- Output for 7.1.25
- array(4) {
["a"]=>
int(0)
["b"]=>
int(23)
["c"]=>
int(35)
["d"]=>
int(42)
}
- Output for 7.1.1, 7.1.24
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(29)
["d"]=>
int(53)
}
- Output for 7.0.19, 7.1.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(34)
["d"]=>
int(48)
}
- Output for 5.5.26, 7.1.22
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(37)
["d"]=>
int(46)
}
- Output for 7.1.21
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(36)
["d"]=>
int(46)
}
- Output for 5.5.8, 7.1.18
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(34)
["d"]=>
int(51)
}
- Output for 5.5.14, 7.1.17
- array(4) {
["a"]=>
int(0)
["b"]=>
int(14)
["c"]=>
int(29)
["d"]=>
int(57)
}
- Output for 7.1.16
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(32)
["d"]=>
int(48)
}
- Output for 5.5.0, 5.5.21, 7.1.14
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(36)
["d"]=>
int(47)
}
- Output for 7.1.13
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(25)
["d"]=>
int(50)
}
- Output for 7.1.12
- array(4) {
["a"]=>
int(0)
["b"]=>
int(7)
["c"]=>
int(40)
["d"]=>
int(53)
}
- Output for 7.1.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(33)
["d"]=>
int(52)
}
- Output for 7.1.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(22)
["c"]=>
int(34)
["d"]=>
int(44)
}
- Output for 7.1.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(12)
["c"]=>
int(25)
["d"]=>
int(63)
}
- Output for 5.5.16, 5.6.1, 7.1.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(28)
["d"]=>
int(55)
}
- Output for 5.6.39, 7.1.0, 7.1.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(11)
["c"]=>
int(40)
["d"]=>
int(49)
}
- Output for 7.1.4
- array(4) {
["a"]=>
int(0)
["b"]=>
int(13)
["c"]=>
int(38)
["d"]=>
int(49)
}
- Output for 5.6.16, 7.1.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(14)
["c"]=>
int(32)
["d"]=>
int(54)
}
- Output for 7.0.6, 7.0.33
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(25)
["d"]=>
int(57)
}
- Output for 5.6.4, 7.0.25, 7.0.31
- array(4) {
["a"]=>
int(0)
["b"]=>
int(21)
["c"]=>
int(32)
["d"]=>
int(47)
}
- Output for 7.0.30
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(35)
["d"]=>
int(48)
}
- Output for 5.5.22, 7.0.29
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(26)
["d"]=>
int(55)
}
- Output for 7.0.27
- array(4) {
["a"]=>
int(0)
["b"]=>
int(8)
["c"]=>
int(42)
["d"]=>
int(50)
}
- Output for 7.0.26
- array(4) {
["a"]=>
int(0)
["b"]=>
int(11)
["c"]=>
int(33)
["d"]=>
int(56)
}
- Output for 5.6.13, 7.0.24
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(38)
["d"]=>
int(42)
}
- Output for 5.6.11, 5.6.32, 7.0.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(34)
["d"]=>
int(49)
}
- Output for 7.0.20
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(31)
["d"]=>
int(53)
}
- Output for 5.6.17, 7.0.14, 7.0.17
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(33)
["d"]=>
int(49)
}
- Output for 7.0.16
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(39)
["d"]=>
int(36)
}
- Output for 5.6.36, 7.0.13
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(32)
["d"]=>
int(52)
}
- Output for 7.0.4, 7.0.12
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(32)
["d"]=>
int(53)
}
- Output for 7.0.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(6)
["c"]=>
int(36)
["d"]=>
int(58)
}
- Output for 7.0.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(35)
["d"]=>
int(45)
}
- Output for 5.5.18, 5.5.20, 7.0.5, 7.0.9
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(35)
["d"]=>
int(49)
}
- Output for 5.6.15, 5.6.26, 7.0.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(16)
["c"]=>
int(36)
["d"]=>
int(48)
}
- Output for 5.6.19, 7.0.7
- array(4) {
["a"]=>
int(0)
["b"]=>
int(21)
["c"]=>
int(26)
["d"]=>
int(53)
}
- Output for 5.5.13, 7.0.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(40)
["d"]=>
int(41)
}
- Output for 7.0.2
- array(4) {
["a"]=>
int(0)
["b"]=>
int(13)
["c"]=>
int(31)
["d"]=>
int(56)
}
- Output for 7.0.0
- array(4) {
["a"]=>
int(0)
["b"]=>
int(23)
["c"]=>
int(32)
["d"]=>
int(45)
}
- Output for 5.6.40
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(28)
["d"]=>
int(53)
}
- Output for 5.6.10, 5.6.28, 5.6.38
- array(4) {
["a"]=>
int(0)
["b"]=>
int(12)
["c"]=>
int(34)
["d"]=>
int(54)
}
- Output for 5.6.35
- array(4) {
["a"]=>
int(0)
["b"]=>
int(8)
["c"]=>
int(37)
["d"]=>
int(55)
}
- Output for 5.6.34
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(35)
["d"]=>
int(50)
}
- Output for 5.6.31
- array(4) {
["a"]=>
int(0)
["b"]=>
int(10)
["c"]=>
int(37)
["d"]=>
int(53)
}
- Output for 5.6.30
- array(4) {
["a"]=>
int(0)
["b"]=>
int(12)
["c"]=>
int(37)
["d"]=>
int(51)
}
- Output for 5.6.29
- array(4) {
["a"]=>
int(0)
["b"]=>
int(19)
["c"]=>
int(33)
["d"]=>
int(48)
}
- Output for 5.6.25
- array(4) {
["a"]=>
int(0)
["b"]=>
int(12)
["c"]=>
int(31)
["d"]=>
int(57)
}
- Output for 5.6.22, 5.6.24
- array(4) {
["a"]=>
int(0)
["b"]=>
int(14)
["c"]=>
int(35)
["d"]=>
int(51)
}
- Output for 5.6.7, 5.6.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(27)
["c"]=>
int(26)
["d"]=>
int(47)
}
- Output for 5.6.21
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(41)
["d"]=>
int(44)
}
- Output for 5.6.20
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(39)
["d"]=>
int(44)
}
- Output for 5.6.18
- array(4) {
["a"]=>
int(0)
["b"]=>
int(13)
["c"]=>
int(25)
["d"]=>
int(62)
}
- Output for 5.6.14
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(36)
["d"]=>
int(44)
}
- Output for 5.5.9, 5.6.12
- array(4) {
["a"]=>
int(0)
["b"]=>
int(24)
["c"]=>
int(33)
["d"]=>
int(43)
}
- Output for 5.6.8
- array(4) {
["a"]=>
int(0)
["b"]=>
int(28)
["c"]=>
int(30)
["d"]=>
int(42)
}
- Output for 5.5.24, 5.5.37, 5.6.0, 5.6.6
- array(4) {
["a"]=>
int(0)
["b"]=>
int(17)
["c"]=>
int(31)
["d"]=>
int(52)
}
- Output for 5.6.5
- array(4) {
["a"]=>
int(0)
["b"]=>
int(25)
["c"]=>
int(30)
["d"]=>
int(45)
}
- Output for 5.6.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(30)
["d"]=>
int(52)
}
- Output for 5.5.38
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(33)
["d"]=>
int(47)
}
- Output for 5.5.36
- array(4) {
["a"]=>
int(0)
["b"]=>
int(8)
["c"]=>
int(31)
["d"]=>
int(61)
}
- Output for 5.5.35
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(37)
["d"]=>
int(43)
}
- Output for 5.5.34
- array(4) {
["a"]=>
int(0)
["b"]=>
int(24)
["c"]=>
int(32)
["d"]=>
int(44)
}
- Output for 5.5.33
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(40)
["d"]=>
int(45)
}
- Output for 5.5.31
- array(4) {
["a"]=>
int(0)
["b"]=>
int(11)
["c"]=>
int(41)
["d"]=>
int(48)
}
- Output for 5.5.30
- array(4) {
["a"]=>
int(0)
["b"]=>
int(24)
["c"]=>
int(20)
["d"]=>
int(56)
}
- Output for 5.5.28
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(31)
["d"]=>
int(51)
}
- Output for 5.5.27
- array(4) {
["a"]=>
int(0)
["b"]=>
int(12)
["c"]=>
int(36)
["d"]=>
int(52)
}
- Output for 5.5.23
- array(4) {
["a"]=>
int(0)
["b"]=>
int(12)
["c"]=>
int(35)
["d"]=>
int(53)
}
- Output for 5.5.5, 5.5.15
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(28)
["d"]=>
int(52)
}
- Output for 5.5.11
- array(4) {
["a"]=>
int(0)
["b"]=>
int(12)
["c"]=>
int(39)
["d"]=>
int(49)
}
- Output for 5.5.10
- array(4) {
["a"]=>
int(0)
["b"]=>
int(18)
["c"]=>
int(27)
["d"]=>
int(55)
}
- Output for 5.5.7
- array(4) {
["a"]=>
int(0)
["b"]=>
int(11)
["c"]=>
int(28)
["d"]=>
int(61)
}
- Output for 5.5.3
- array(4) {
["a"]=>
int(0)
["b"]=>
int(20)
["c"]=>
int(29)
["d"]=>
int(51)
}
- Output for 5.5.1
- array(4) {
["a"]=>
int(0)
["b"]=>
int(15)
["c"]=>
int(38)
["d"]=>
int(47)
}
preferences:
157.02 ms | 401 KiB | 196 Q