Выборка рандомно из массива

Fakir

в работе над собой
Выборка рандомно из массива

Есть массив, в нем минимум 5 элементов максимум ~

Необходимо выбрать 5 записей массива, но не один не должен быть повторным, т.е. все разные.

Как можно решить проблему?

Заранее благодарен.
 

Demiurg

Guest
примерно так:

PHP:
$n = 5;
$keys = array();

while(!$n)
{
 $key = rand(0 , ...);
 if(!in_array($arr[$key] , $keys))
{
echo $arr[$key].'<br>';
$n--;
$keys[] = $key;
}
}
 

Fakir

в работе над собой
Tony, хммм... спасибо вот это то что надо... Я ни не знал shuffle().
 

tony2001

TeaM PHPClub
там нигде не сказано, что результирующий набор содержит уникальные ключи.
а с shuffle только так и получится.
 

Fakir

в работе над собой
Ан, нет, Tony не подошло. При наличии только 5-ти эл-тов в массиве, функция shuffle() как то не так работает как надо.

Пример:
PHP:
$TmpArray = Array (
    [0] => 11
    [1] => 12
    [2] => 13
    [3] => 14
    [4] => 15
);

shuffle($TmpArray);

for ($i=0; $i<4; $i++) {
  echo $TmpArray[$i];
}
И он выдает такое:

11
12
12
13
15
 

Fakir

в работе над собой
ruslan, array_rand не подходит потому как он может повторять едл-ты массива, а мне это не надо.
 

tony2001

TeaM PHPClub
void shuffle ( array array)
This function shuffles (randomizes the order of the elements in) an array. You must use srand() to seed this function.
 
Сверху