Просмотр поста

.
ДоХтор

dilp,

Вариант (+/-)
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;
}