function selectReservoir($arr, $N) {
$size = count($arr);
$reservoir = array();
$items = 0;
while ($items < $N) {
$i = rand(0, $size);
$found = false;
for ($j = 0; $j < $items; $j++) {
if (in_array($arr[$i], $reservoir)) {
$found = true;
break;
}
}
if (!$found) {
array_push($reservoir, $arr[$i]);
$items++;
}
}
return $reservoir;
}
$arr = array(4, 9, 14, 96, 13, 0, 3, 99, 19, 2, 80, 1, 7);
$N = 5;
$reservoir = selectReservoir($arr, $N);
print_r($reservoir);
/*
run:
Array
(
[0] => 14
[1] => 0
[2] => 19
[3] => 1
[4] => 96
)
*/