Вариант (+/-)
session_id() ?: session_start();
echo 'Выбрана картинка с id: '. myRand();
function myRand() {
$id = [1,2,3,4,5,6,7,8,9,10];
$r = [4,0,15,3,1,0,7,25,6,30];
if (!empty($_SESSION['freak'])) {
$a = &$_SESSION['freak'];
$k = array_rand($a);
if ($a[$k] < 1) {
unset($a[$k]);
return myRand();
}
} else {
$_SESSION['freak'] = array_combine($id, $r);
return myRand();
}
--$a[$k];
return $k;
}
/* Вариант для массива $id с выпадающими последними элементами */
session_id() ?: session_start();
$id = [1,2,3,4,5,6,7,8,9,10];
$r = [4,0,15,3,1,0,7,25,6,30];
echo 'Выбрана картинка с id: '. myRand($id, $r);
function myRand($id, $r) {
$r = array_slice($r, 0, count($id));
if (empty($_SESSION['freak']) || count($_SESSION['freak']) < 2) {
$_SESSION['freak'] = array_combine($id, $r);
return myRand($id, $r);
} else {
$a = &$_SESSION['freak'];
$k = array_rand($a);
if ($a[$k] < 1) {
unset($a[$k]);
return myRand($id, $r);
}
}
--$a[$k];
return $k;
}