language: PHP (php 5.4.4)
date: 853 days 20 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<?php
 
$data = array
(
        'very-high-probability' => 100000,
        'high-probability' => 1000,
        'low-probability' => 10,
        'also-probable' => 1000,
);
 
print_r(Probability($data, 1));
print_r(Probability($data, 2));
print_r(Probability($data, 2));
print_r(Probability($data, 2));
print_r(Probability($data, 3));
print_r(Probability($data, 4));
 
function Probability($data, $number = 1)
{
        $result = array();
 
        if (is_array($data) === true)
        {
                $data = array_map('abs', $data);
                $number = min(max(1, abs($number)), count($data));
 
                while ($number-- > 0)
                {
                        $chance = 0;
                        $probability = mt_rand(1, array_sum($data));
 
                        foreach ($data as $key => $value)
                        {
                                $chance += $value;
 
                                if ($chance >= $probability)
                                {
                                        $result[] = $key; unset($data[$key]); break;
                                }
                        }
                }
        }
 
        return $result;
}
 
?>