Случайный выбор

923
.
dilp

хорошо, тогда так

$r['alfa'] =3;
$r['beta'] =9;
$r['gamma'] =0;
$r['delta'] =6;
.
(\/)____o_O____(\/)

dilp, http://php.net/manual/ru/funct ... s.php

.
dilp
Добавлено: 05.05.2017 / 23:03
Koenig, не совсем понимаю как это мне поможет

$r['alfa'] =3;
$r['beta'] =9;
$r['gamma'] =0;
$r['delta'] =6;

заменится на
$a['0'] =3;
$a['1'] =9;
$a['2'] =0;
$a['3'] =6;


функция myrand вернёт к примеру индекс 1,
и как мне соотнести этот индекс 1 с массивом $r, а точнее с $r['beta']?

Добавлено: 05.05.2017 / 23:06
надо чтоб получилось что-то типа так
echo 'Выбрана картинка с id: '. myRand(); => Выбрана картинка с id: beta
.
надо чтоб получилось что-то типа так
echo 'Выбрана картинка с id: '. myRand(); => Выбрана картинка с id: beta
* (+/-)
<?php

session_id() ?: session_start();

$r = [
    'alfa' => 3,
    'beta' => 9,
    'gamma' => 0,
    'delta' => 6
];

echo 'Выбрана картинка с id: '. myRand($r);
 
 
function myRand($r) {
    if (!empty($_SESSION['freak'])) {
        $a = &$_SESSION['freak'];
        $k = array_rand($a);
 
        if ($a[$k] < 1) {
            unset($a[$k]);
            return myRand($r);
        }
    } else {
        $_SESSION['freak'] = $r;
        return myRand($r);
    }
 
    --$a[$k];
 
    return $k;
}
.

спасибо, то что ДоХтор прописал

.

))

.

dilp, вот вариант по шустрее

session_id() ?: session_start();

$r = [
    'alfa' => 3,
    'beta' => 9,
    'gamma' => 0,
    'delta' => 6
];
 
echo 'Выбрана картинка с id: '. myRand($r);


function myRand($r) {
    do {
        if (!empty($_SESSION['freak'])) {
            $a = &$_SESSION['freak'];
            $k = array_rand($a);
            
            empty($a[$k]) ?: --$a[$k];
     
            if ($a[$k] < 1) {
                unset($a[$k]);
            }
        } else {
            $_SESSION['freak'] = $r;
        }
    } while (empty($k) || empty($a[$k]));
    
    return $k;
}
.

И на сколько шустрее? ))

.
# dilp (31.05.2017 / 01:31)
И на сколько шустрее? ))
Значительно )
.

Меня смущает применение сессии, её ведь можно как-то подделать и повлиять на выборку?

Всего: 38