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; } ?> |
PD9waHAKCiRkYXRhID0gYXJyYXkKKAoJJ3ZlcnktaGlnaC1wcm9iYWJpbGl0eScgPT4gMTAwMDAwLAoJJ2hpZ2gtcHJvYmFiaWxpdHknID0+IDEwMDAsCgknbG93LXByb2JhYmlsaXR5JyA9PiAxMCwKCSdhbHNvLXByb2JhYmxlJyA9PiAxMDAwLAopOwoKcHJpbnRfcihQcm9iYWJpbGl0eSgkZGF0YSwgMSkpOwpwcmludF9yKFByb2JhYmlsaXR5KCRkYXRhLCAyKSk7CnByaW50X3IoUHJvYmFiaWxpdHkoJGRhdGEsIDIpKTsKcHJpbnRfcihQcm9iYWJpbGl0eSgkZGF0YSwgMikpOwpwcmludF9yKFByb2JhYmlsaXR5KCRkYXRhLCAzKSk7CnByaW50X3IoUHJvYmFiaWxpdHkoJGRhdGEsIDQpKTsKCmZ1bmN0aW9uIFByb2JhYmlsaXR5KCRkYXRhLCAkbnVtYmVyID0gMSkKewoJJHJlc3VsdCA9IGFycmF5KCk7CgoJaWYgKGlzX2FycmF5KCRkYXRhKSA9PT0gdHJ1ZSkKCXsKCQkkZGF0YSA9IGFycmF5X21hcCgnYWJzJywgJGRhdGEpOwoJCSRudW1iZXIgPSBtaW4obWF4KDEsIGFicygkbnVtYmVyKSksIGNvdW50KCRkYXRhKSk7CgoJCXdoaWxlICgkbnVtYmVyLS0gPiAwKQoJCXsKCQkJJGNoYW5jZSA9IDA7CgkJCSRwcm9iYWJpbGl0eSA9IG10X3JhbmQoMSwgYXJyYXlfc3VtKCRkYXRhKSk7CgoJCQlmb3JlYWNoICgkZGF0YSBhcyAka2V5ID0+ICR2YWx1ZSkKCQkJewoJCQkJJGNoYW5jZSArPSAkdmFsdWU7CgoJCQkJaWYgKCRjaGFuY2UgPj0gJHByb2JhYmlsaXR5KQoJCQkJewoJCQkJCSRyZXN1bHRbXSA9ICRrZXk7IHVuc2V0KCRkYXRhWyRrZXldKTsgYnJlYWs7CgkJCQl9CgkJCX0KCQl9Cgl9CgoJcmV0dXJuICRyZXN1bHQ7Cn0KCj8+
-
upload with new input
-
result: Success time: 0s memory: 13112 kB returned value: 0
Array ( [0] => high-probability ) Array ( [0] => very-high-probability [1] => high-probability ) Array ( [0] => very-high-probability [1] => also-probable ) Array ( [0] => very-high-probability [1] => high-probability ) Array ( [0] => very-high-probability [1] => high-probability [2] => also-probable ) Array ( [0] => very-high-probability [1] => high-probability [2] => also-probable [3] => low-probability )


